Здравствуйте, товарищи программисты!
Данным топиком я открываю цикл статей про паттерны(шаблоны) проектирования в общем и их реализацию на php в частном. Каждый программист, который разрабатывает действительно масштабные проекты со временем начинает замечать, что сталкивается с одними и теми же проблемами. Здесь речь идет не о использовании библиотек и фреймворков, а о проблемах, которые возникают при проектировании совершенно различных программных продуктов. К таким проблемам можно отнести организацию правильных иерархий классов, которая позволила бы масштабировать систему, как горизонтально так и вертикально или например замену глобальных переменных объектом, который инкапсулирует доступ к данным. Каждый раз приходится придумывать решения этих проблем, что приводит к трате драгоценного времени, которое можно посвятить более приятным занятиям. Наверняка вы не первый сталкиваетесь с данными проблемами, соответственно кто-то уже придумал оптимальное решения и почему бы им не воспользоваться. Паттерны проектирования - это как раз таки решения этих часто возникающих проблем проектирования. Шаблон проектирование не подразумевает конкретную реализацию кода, т.к. они являются по своей природе универсальными и могут быть реализованы практически в любом современном объектно-ориентированном языке программирования. Но в зависимости от используемого языка программирования могут быть свои особенности, поэтому я буду реализовывать небольшие примеры на php. Кроме того на примере всегда проще разбираться.
Архитекторы первыми додумались использовать паттерны для своих архитектурных целей. Программисты же начали использовать шаблоны с развитием ООП и соответственно с появлением возможности более удобного повторного использования написанного кода. Наиболее авторитетными авторами являются так называемая банда четырех -
это группа, которая написала книгу "Design Patterns" и описала в ней основные шаблоны проектирования.
Шаблоны проектирования в PHP
PHP начал своё развитие с небольшой библиотеки написанной на perl, основной функцией которой являлась обработка форм. Но с тех времён многое изменилось и сейчас php является очень мощным инструментом для написания приложений любого масштаба. Пусть для некоторых он так и останется надстройкой над html, но эти люди сами себя ограничивают, т.к. отрицать несомненного лидера в области web-разработки по крайней мере нерозумно.
Начиная с 4 версии php приобрел объектно-ориентированные возможности. Конечно тогда были свои недостатки, например передача объектов по значению, является мягко говоря спорным решением, но тем не менее писать ООП приложения уже было возможно. Именно тогда программисты своей активностью в данном направлении положили путь развития PHP, как объектно-ориентированного языка программирования. В пятой версии были добавлены новые функции:
- контроль типа
- передача объектов по ссылке
- ключевое слово static
- Ключевое слово final
- Автоматическая загрузка объектов
- Константы в объектах
- Абстрактные классы
- Интерфейсы
- Магические методы
- Клонирование объектов
Всё это благодаря использованию движка Zend Engine 2.
Как вы видите в PHP 5 есть все необходимые средства для написания объектно-ориентированных программ и соответственно использования шаблонов проектирования. В следующих топиках данного цикла я постараюсь рассмотреть основные шаблоны проектирования и их реализацию.