PHP DirectoryIterator

Сейчас очень много работаю с SPL классами в PHP. Честно говоря, работать с ними не всегда удобно. Сегодня наткнулся на проблему с указателями в DirectoryIterator. Ее суть хорошо отражает следующий код.


$dirTree = new DirectoryIterator("/testDir"); // Допустим в директории файлы a.php и b.php

$items = array();                      
foreach($dirTree as $item) {    
   if ($item->isDir()) {     
         $items[] =  $item;        
         echo $item->getFilename(); // Здесь все ок - сначало выводится a.php, затем b.php
   }                         
}                               

$firstElement = $items[0];              
var_dump($firstElement->getFilename()); // вот здесь выводится пустая строка, а я ожидал что будет ‘a.php’



( Читать дальше )

SPL Iterators


Базовые понятия
Итераторы (Iterators) — это классы которые реализуют интерфейс Iterator. Реализация данного интерфейса необходима при организации доступа к циклическим структурам (массивы, списки и т.д.).

В SPL (Standard PHP Library) существует большое количество готовых классов, реализующих интерфейс Iterator.

Далее перечислены классы, которые непосредственно реализуют интерфейс Iterator: Traversable, IteratorAgregate, OuterIterator, RecursiveIterator. Остальные классы-итераторы SPL наследуют свои интерфейсы уже от них.


( Читать дальше )

Что такое PHP SPL


SPL — это набор стандартных библиотек PHP (Standard PHP Library) появившихся начиная с 5-ой версии PHP.
Если рассматривать SPL с позиции разработчика, то легко выделить шесть основных классов и интерфейсов, функционал которых расширяется в большом множестве классов-потомков.


( Читать дальше )