- public function setExtensionData( array $extensionData ) {
- $this->extensionData = $extensionData;
+ public function setExtensionData( $extensionData ) {
+ if ( $extensionData instanceof Closure ) {
+ $this->extensionData = $extensionData;
+ } elseif ( is_array( $extensionData ) ) {
+ wfDeprecated( __METHOD__ . ' with array argument', 1.32 );
+ $this->extensionData = function () use ( $extensionData ) {
+ return $extensionData;
+ };
+ } else {
+ $type = is_object( $extensionData )
+ ? get_class( $extensionData )
+ : gettype( $extensionData );
+ throw new \InvalidArgumentException(
+ __METHOD__ . " must be called with Closure|array, but received $type" );
+ }