4 * Trait for SearchResult subclasses to share non-obvious behaviors or methods
5 * that rarely specialized
7 trait SearchResultTrait
{
9 * A function returning a set of extension data.
12 protected $extensionData;
15 * Get the extension data as:
16 * augmentor name => data
19 public function getExtensionData() {
20 if ( $this->extensionData
) {
21 return call_user_func( $this->extensionData
);
28 * Set extension data for this result.
30 * augmentor name => data
31 * @param Closure|array $extensionData Takes no arguments, returns
32 * either array of extension data or null.
34 public function setExtensionData( $extensionData ) {
35 if ( $extensionData instanceof Closure
) {
36 $this->extensionData
= $extensionData;
37 } elseif ( is_array( $extensionData ) ) {
38 wfDeprecated( __METHOD__
. ' with array argument', '1.32' );
39 $this->extensionData
= function () use ( $extensionData ) {
40 return $extensionData;
43 $type = is_object( $extensionData )
44 ?
get_class( $extensionData )
45 : gettype( $extensionData );
46 throw new \
InvalidArgumentException(
47 __METHOD__
. " must be called with Closure|array, but received $type" );