Начну небольшой цикл статей посвященных шаблонам проектирования с реализацией на PHP. Постепенно эту запись буду редактировать, чтобы собрать все ссылки скопом.
Все шаблоны я писал сам, но, естественно, ориентировался на существующий код и описания (почти всё с википедии и книг по Java). В основном, конечно это Java и C#, поскольку паттерны были придуманы для «больших» языков, а реализации в PHP лишь пытаются повторить их код. Это одна из проблем, поскольку PHP сам по себе уже имеет ряд готовых решений где использование шаблона просто не имеет смысла. Например шаблон Prototype (Прототип) реализуется через clone
и ничего придумывать не нужно. Или шаблон Iterator (Итератор) по сути сводится к перебору массива, поскольку массив в PHP — универсальная структура и может содержать не только простые данные, вроде строк и чисел, но и сложные — объекты. Конечно, можно перевести код этих шаблонов с Java на PHP, но большого смысла это иметь не будет, разве что для теоретического изучения.
Шаблонов проектирования много и разобраться в них сходу не получится. Мои варианты шаблонов имеют пару особенностей. Первая — это реальный исполняемый код. То есть вы можете запустить на сервере index.php и получите результат в браузер. Сам шаблон и вся его работа размещена в одном файле для удобства (чтобы не прыгать по нескольким файлам).