Как создать коллекцию(+)

Sherman

Mephi
Как создать коллекцию(+)

Хотелось бы сделать следующее.

Есть некоторый класс, который имеет такую струкуру данных:

Код:
class Item
{
   private $item("key"=>$value,..);
    
   __get($key)
  {
     return $this->item[$key];
  }

  //другие методы, которые заполняют $this->item из бд
}
В php4(метод __get() убираем), я просто сделал бы так:

добавил бы член класса массив $itemCollection и аккуратно складывал бы туда массивы $item, обычным копированием:

$this->itemCollection[] = $this->item;

В итоге я получил бы такой синтаксис:

Код:
$item = new Item();
$item->Get();
foreach($item->itemCollection as $itemInfo)
{
   echo  $itemInfo["key"];
}
В php5 появлась возможность сделать это эффектнее.

Код:
$item = new Item();
$item->Get();
echo $item->key;
Такое работает с одной записью.

Теперь обясню чего я хочу добиться. Возможно ли получить синтаксис вида:

Код:
foreach($itemCollection as $item)
{
   echo  $item->key;
}
Вот как грамотно реализовать коллекцию item. И еще вопрос, не ударит ли это катастрофически по производительности?

-~{}~ 28.07.05 18:44:

//еще добавления.

Еще раз подчеркну, что меня смущает то, что в коллекции объектов надо будет хранить экземпляр класса, а не массив. Каким образом это скажется на производительности?

p.s. Все это мне нужно для того, чтобы максимально упростить и формализовать работу для третьих лиц(программистов), т.е. написать понятный API. Сам код реализации им виден не будет, будет только дан набор классов, где есть методы, которые делаю всю работу. Также будет дана подробная документация по этим методам с примерами.

p.p.s. Раньше немного работал с .NET и c#.
 

Profic

just Profic (PHP5 BetaTeam)
читаем про итераторы в [m]ref.spl[/m] у меня даже имеется класс для доступа к MySQL который эти самые итераторы и использует...
 
Сверху