The code below is a simple example of usage . Note that the method which does the actual job is accept.
<?php
class UserFilter extends FilterIterator
{
private $userFilter;
public function __construct(Iterator $iterator , $filter )
{
parent::__construct($iterator);
$this->userFilter = $filter;
}
public function accept()
{
$user = $this->getInnerIterator()->current();
if( strcasecmp($user['name'],$this->userFilter) == 0) {
return false;
}
return true;
}
}
$array = array(
array('name' => 'Jonathan','id' => '5'),
array('name' => 'Abdul' ,'id' => '22')
);
$object = new ArrayObject($array);
// Note it is case insensitive check in our example due the usage of strcasecmp function
$iterator = new UserFilter($object->getIterator(),'abdul');
foreach ($iterator as $result) {
echo $result['name'];
}
/* Outputs Jonathan */
?>
Regards.
PHP.mk документација
FilterIterator
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
class.filteriterator.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
class.filteriterator.php
FilterIterator
Референца за `class.filteriterator.php` со подобрена типографија и навигација.
Класата FilterIterator
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
Вовед
Овој апстрактен итератор ги филтрира непосакуваните вредности. Оваа класа треба да се прошири за да се имплементираат прилагодени филтри за итератор. На FilterIterator::accept() мора да се имплементира во подкласата.
Синопсис на класата
/* Методи */
/* Наследени методи */
}Содржина
- FilterIterator::accept — Проверете дали тековниот елемент на итераторот е прифатлив
- FilterIterator::__construct — Конструирајте filterIterator
- FilterIterator::current — Земете ја вредноста на тековниот елемент
- FilterIterator::key — Земи го тековниот клуч
- FilterIterator::next — Помести го итераторот напред
- FilterIterator::rewind — Назад итераторот
- FilterIterator::valid — Враќа текстуелна содржина
Белешки од корисници 3 белешки
— Провери дали низата содржи повеќе записи ¶
пред 17 години
Анонимен ¶
пред 11 години
A little test about the function call order:
<?php
class TestIterator extends IteratorIterator
{
public function key()
{
echo __FUNCTION__, PHP_EOL;
return parent::key();
}
public function next()
{
echo __FUNCTION__, PHP_EOL;
return parent::next();
}
public function rewind()
{
echo __FUNCTION__, PHP_EOL;
return parent::rewind();
}
public function valid()
{
echo __FUNCTION__, PHP_EOL;
return parent::valid();
}
}
class TestFilterIterator extends FilterIterator
{
public function accept()
{
echo __FUNCTION__, PHP_EOL;
return true;
}
}
$iterator = new ArrayIterator(array('a', 'b', 'c'));
foreach (new TestFilterIterator(new TestIterator($iterator)) as $k => $v) {
echo PHP_EOL;
}
?>
This will output the following:
rewind
valid
key
accept
next
valid
key
accept
next
valid
key
accept
next
valid
Анонимен ¶
пред 4 години
Filter object collection by method:
<?php
/**
* @method object current()
*/
class CollectionFilterIterator extends FilterIterator
{
private $methodName;
private $methodArguments;
public function function __construct(Iterator $collection, string $methodName, array $methodArguments = [])
{
parent::__construct($collection);
$this->methodName = $methodName;
$this->methodArguments = array_values($methodArguments);
}
public function accept(): bool
{
return (bool) $this->current()->{$this->methodName}(...$this->methodArguments);
// or call_user_func_array([$this->current(), $this->methodName], $this->methodArguments);
}
}
?>