mirror of
https://github.com/php/php-src.git
synced 2024-10-22 08:47:29 +00:00
58 lines
1.1 KiB
PHP
Executable File
58 lines
1.1 KiB
PHP
Executable File
<?php
|
|
|
|
/** @file searchiterator.inc
|
|
* @ingroup Examples
|
|
* @brief abstract class SearchIterator
|
|
* @author Marcus Boerger
|
|
* @date 2003 - 2005
|
|
*
|
|
* SPL - Standard PHP Library
|
|
*/
|
|
|
|
/** @ingroup Examples
|
|
* @brief Iterator to search for a specific element
|
|
* @author Marcus Boerger
|
|
* @version 1.0
|
|
*
|
|
* This extended FilterIterator stops after finding the first acceptable
|
|
* value.
|
|
*/
|
|
abstract class SearchIterator extends FilterIterator
|
|
{
|
|
/** @internal whether an entry was found already */
|
|
private $done = false;
|
|
|
|
/** Rewind and reset so that it once again searches.
|
|
* @return void
|
|
*/
|
|
function rewind()
|
|
{
|
|
parent::rewind();
|
|
$this->done = false;
|
|
}
|
|
|
|
/** @return whether the current element is valid
|
|
* which can only happen once per iteration.
|
|
*/
|
|
function valid()
|
|
{
|
|
return !$this->done && parent::valid();
|
|
}
|
|
|
|
/** Do not move forward but instead mark as finished.
|
|
* @return void
|
|
*/
|
|
function next()
|
|
{
|
|
$this->done = true;
|
|
}
|
|
|
|
/** Aggregates the inner iterator
|
|
*/
|
|
function __call($func, $params)
|
|
{
|
|
return call_user_func_array(array($this->getInnerIterator(), $func), $params);
|
|
}
|
|
}
|
|
|
|
?>
|