Update git submodules
[mediawiki.git] / includes / search / BaseSearchResultSet.php
blobb6626ec44a9f28f034d382c5c81506d05e326027
1 <?php
3 /**
4 * BaseSearchResultSet is the base class that must be extended by SearchEngine
5 * search result set implementations.
7 * This base class is meant to hold B/C behaviors and to be useful it must never:
8 * - be used as type hints (ISearchResultSet must be used for this)
9 * - implement a constructor
10 * - declare utility methods
12 * @stable to extend
13 * @ingroup Search
15 abstract class BaseSearchResultSet implements ISearchResultSet {
17 /**
18 * @var ArrayIterator|null Iterator supporting BC iteration methods
20 private $bcIterator;
22 /**
23 * Fetches next search result, or false.
24 * @deprecated since 1.32; Use self::extractResults() or foreach
25 * @return SearchResult|false
27 public function next() {
28 wfDeprecated( __METHOD__, '1.32' );
29 $it = $this->bcIterator();
30 $searchResult = $it->current();
31 $it->next();
32 return $searchResult ?? false;
35 /**
36 * Rewind result set back to beginning
37 * @deprecated since 1.32; Use self::extractResults() or foreach
39 public function rewind() {
40 wfDeprecated( __METHOD__, '1.32' );
41 $this->bcIterator()->rewind();
44 private function bcIterator() {
45 if ( $this->bcIterator === null ) {
46 // @phan-suppress-next-line PhanTypeMismatchProperty Expected
47 $this->bcIterator = 'RECURSION';
48 $this->bcIterator = $this->getIterator();
49 } elseif ( $this->bcIterator === 'RECURSION' ) {
50 // @phan-suppress-previous-line PhanTypeComparisonFromArray Use of string is a hack
51 // Either next/rewind or extractResults must be implemented. This
52 // class was potentially instantiated directly. It should be
53 // abstract with abstract methods to enforce this but that's a
54 // breaking change...
55 wfDeprecated( static::class . ' without implementing extractResults', '1.32' );
56 $this->bcIterator = new ArrayIterator( [] );
58 return $this->bcIterator;
61 /**
62 * Fetch an array of regular expression fragments for matching
63 * the search terms as parsed by this engine in a text extract.
64 * STUB
66 * @return string[]
67 * @deprecated since 1.34 (use SqlSearchResult)
69 public function termMatches() {
70 return [];
73 /**
74 * Frees the result set, if applicable.
75 * @deprecated noop since 1.34
77 public function free() {