Welcome to php club

Стандартная библиотека PHP (SPL)

Краткое описание

Очередной новой частью стандартной поставки дистрибутива PHP стала «Стандартная библиотека PHP» (Standart PHP Library, SPL) Маркуса Боэргера. Библиотека представляет собой набор классов и интерфейсов для решения стандартных задач, как то итерация по массиву, директории, готовый итератор для SimpleXML.
Для примера рассмотрим итератор RecusiveDirectoryIterator, который позволяет легко и просто пройтись по дереву каталогов:

<?php
function recursion($iterator, $maxlevel = -1, $curlevel = 0) {
    
$prefix = str_repeat("  ", $curlevel);
    foreach (
$iterator as $value) {
        echo
$prefix . $value . ($iterator->isDir() ? '/' : '') . "\n";
        if (
$iterator->hasChildren() && ($maxlevel < 0 || $maxlevel >= 0 && $maxlevel > $curlevel)) {
            
recursion($iterator->getChildren(), $maxlevel, $curlevel + 1);
        }
    }
}

recursion(new RecursiveDirectoryIterator('c:/'), 1);
?>

Результат:

Также в составе этой библиотеке имеется интересный класс ArrayObject, который реализует интерфейс ArrayAccess. К любому объекту класса, который реализует данный интерфейс можно обращать как к обычному массиву:
<?php
$a
= new ArrayObject();
$a['a'] = 0;
$a['b'] = 1;
if (isset(
$a['a'])) {
    echo
'$a["a"] = ' . $a['a'] . "\n";
    unset(
$a['a']);
}
foreach(
$a as $k => $v) {
    echo
$k . ' => ' . $v . "\n";
}
?>

Результат:

Проблемы с обратной совместимостью

Проблем с обратной совместимостью данное нововведение не имеет.

Дополнительные сведения

Описание в оригинальной документации: http://www.php.net/spl
Более полное описание SPL на английском: http://www.php.net/~helly/php/ext/spl/


 
Комментариев нет. [Показать комментарии/форму]