T. Anre
Новичок
Итераторы, коллекции и PHP
Как вы думаете насколько оправдано использование "связки" Коллекция-Итератор в PHP?
PHP:
<?php
// Интерфейс коллекции
interface ICollection
{
public function equals(Collection $c);
public function toArray();
public function add($item);
public function addAll(Collection $c);
public function containsAll(Collection $c);
public function retainAll(Collection $c);
public function removeAll(Collection $c);
public function clear();
public function contains($item);
public function isEmpty();
public function Iterator();
public function remove($item);
public function size();
}
?>
PHP:
<?php
// Интерфейс итератора
interface IListIterator
{
/**
* Добавление новго элемента
* @param mixed $item Элемент
* @return boolean
*/
public function add($item);
/**
* Есть ли следующий элемент
* @return boolean
*/
public function hasNext();
/**
* Есть ли предыдущий элемент
* @return boolean
*/
public function hasPrevious();
/**
* Получить "следующий" объект
* @return boolean
*/
public function next();
/**
* Получить порядковый номер следующиего элемента
* @return boolean
*/
public function nextIndex();
/**
* Получить "предыдущий" объект
* @return boolean
*/
public function previous();
/**
* Получить порядковый номер предыдущего элемента
* @return boolean
*/
public function previousIndex();
/**
* Заменить текущий элемент другим
* @return boolean
*/
public function set($item);
/**
* Удалить текущий элемент
* @param mixed $item Элемент
* @return boolean
*/
public function remove();
}
?>
PHP:
<?php
// Пример 1
// Код на основе коллекций и итераторов
$C = new Collection();
$C->add(new A());
$C->add(new B());
$CItr = $C->Iterator();
while ($CItr->hasNext())
echo $CItr->next() . "\n<br/>";
PHP:
// Пример 2
// Код на базе массиовов
$C = array();
$C[] = new A();
$C[] = new B();
foreach ($C AS $Item)
echo $Item . "\n<br/>";
?>

