Merge "Add .pipeline/ with dev image variant"
[lhc/web/wiklou.git] / includes / search / SearchResultTrait.php
1 <?php
2
3 /**
4 * Trait for SearchResult subclasses to share non-obvious behaviors or methods
5 * that rarely specialized
6 */
7 trait SearchResultTrait {
8 /**
9 * A function returning a set of extension data.
10 * @var Closure|null
11 */
12 protected $extensionData;
13
14 /**
15 * Get the extension data as:
16 * augmentor name => data
17 * @return array[]
18 */
19 public function getExtensionData() {
20 if ( $this->extensionData ) {
21 return call_user_func( $this->extensionData );
22 } else {
23 return [];
24 }
25 }
26
27 /**
28 * Set extension data for this result.
29 * The data is:
30 * augmentor name => data
31 * @param Closure|array $extensionData Takes no arguments, returns
32 * either array of extension data or null.
33 */
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;
41 };
42 } else {
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" );
48 }
49 }
50 }