Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
76.92% |
10 / 13 |
|
50.00% |
1 / 2 |
CRAP | |
0.00% |
0 / 1 |
SearchResultTrait | |
76.92% |
10 / 13 |
|
50.00% |
1 / 2 |
5.31 | |
0.00% |
0 / 1 |
getExtensionData | |
100.00% |
3 / 3 |
|
100.00% |
1 / 1 |
2 | |||
setExtensionData | |
70.00% |
7 / 10 |
|
0.00% |
0 / 1 |
3.24 |
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 ( $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 = static function () use ( $extensionData ) { |
40 | return $extensionData; |
41 | }; |
42 | } else { |
43 | $type = get_debug_type( $extensionData ); |
44 | throw new InvalidArgumentException( |
45 | __METHOD__ . " must be called with Closure|array, but received $type" ); |
46 | } |
47 | } |
48 | } |