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.
The FilterIterator class
(PHP 5 >= 5.1.0)
Introducción
Este iterador abstracto filtra valores no deseados. Esta clase se deberá extender para implementar filtros personalizados. El FilterIterator::accept() dbe ser implementado en la subclase.
Sinopsis de la Clase
abstract
FilterIterator
extends
IteratorIterator
implements
OuterIterator
,
Traversable
,
Iterator
{
/* Métodos */
__construct
( Iterator
}$iterator
)Tabla de contenidos
- FilterIterator::accept — Comprueba si el elemento actual del iterador es aceptable
- FilterIterator::__construct — Construye un filterIterator
- FilterIterator::current — Obtiene el valor del elemento actual
- FilterIterator::getInnerIterator — Obtiene el iterador interno
- FilterIterator::key — Obtiene la clave actual
- FilterIterator::next — Mueve el iterador a la siguiente posición
- FilterIterator::rewind — Rebobina el iterador
- FilterIterator::valid — Comprueba si el elemento actual es válido
Venelin Vulkov ¶
4 years ago
