2. Кто нибудь использовал SPL*
без головной боли?
[* The Standard PHP Library (SPL) is a collection of interfaces
and classes that are meant to solve common problems]
6. Листинг кода: два события [legacy code]
Минусы:
Тестируемость
Сопровождение
Повторное
использование
7. Не хочу видеть как
работает программа,
хочу понять что она
делает!
8. Заказчик: «А давайте добавим синхронизацию
значений цены, наличия товара на складе между
товаром из списка желаний и товаром из каталога
в процессе работы скрипта?»
9. «и еще ограничим количество найденных товаров
до 20 штук (n) за одно событие. В каждом новом
письме покажем следующие 20 - n товаров и т.д.»
21. Единственная
нормальная
книга по SPL
Платная 19$
Издана в июле 2013
PHP 5.4
Обращает внимание на
производительности кода
Понятные примеры
https://www.phparch.com/books/mastering-the-spl-library/
32. Интерфейс Traversable
Traversable не может быть реализован*
Traversable может быть определен
(instanceof)
foreach() автоматически обнаруживает
traversable и делает магию
34. Проблема с FilterIterator
FilterIterator обращается к
current() элементу внешнего
итератора, чтоб выяснить
подходит ли он под фильтр
или нет. Это может быть
проблемой при изменении
состояния внешнего
итератора при вызове
current()
35. ArrayIterator
ArrayIterator самый популярный.
Данные хранятся только во внутреннем массиве в
противовес загрузке из внешнего источника
Не обходит массив рекурсивно. Нужен
RecursiveArrayIterator
Реализовано стандартное поведение count() и []
Предоставляет набор алгоритмов сортировки (uasort(),
natcasesort(), asort())
37. CachingIterator
Читает следующее значение «в память» до того, как оно
понадобится для доступа
Кэширует все значения, которые возвращает
Хитрая система приведения объекта в строчку
CachingIterator странный итератор. Включает в
себя 3 вида функциональности: