Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
66.67% covered (warning)
66.67%
10 / 15
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
SearchResultTrait
66.67% covered (warning)
66.67%
10 / 15
50.00% covered (danger)
50.00%
1 / 2
7.33
0.00% covered (danger)
0.00%
0 / 1
 getExtensionData
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
 setExtensionData
58.33% covered (warning)
58.33%
7 / 12
0.00% covered (danger)
0.00%
0 / 1
5.16
1<?php
2
3/**
4 * Trait for SearchResult subclasses to share non-obvious behaviors or methods
5 * that rarely specialized
6 */
7trait 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 = static 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}