Registry
![]() |
Это теоритическая часть, практическую можно найти на странице CORE |
|---|
Ну я думаю стоит начать из далека... когда еще деревья были большими а колбаса вкусной...
Нет это слишком рано ;) Начнем с того что паттерны в программировании были придуманы никак не для PHP, а для Smalltalk. Ну а к PHPони были притянуты "за уши", с появлением 5-ой версии.
Идея паттерна Registry состоит в том что проект (читай : сайт) содержит много разнообразных классов, например класс для работы с БД и шаблонизатор. А теперь появился класс User который должен работать с БД и передавать данные шаблонизатору. Значит он должен знать о функциях SELECT и ASSIGN двух других классов. Классы можно было бы наследовать и получить этот доступ но наследовать в PHP можно только один класс, да и если проект большой то стоит ли наследовать 150 разных классов?! Значит надо передавать экземпляры классов в функции которые их используют, или еще лучше в конструктор а там присвоить их свойствам. А зачем передавать(?!) можно сразу создать новый экземпляр прямо в конструкторе User'a, допустим, а если при создании конструкторам нужно передавать параметры? Или можно использовать паттерн Singleton для того чтобы не пересоздавать объект каждый раз но это не всегда удобно. Ну, а что если, например вы решите сменить шаблонизатор с XTemplate на Smarty и придется искать и реплейсить все названия класса.
Читать далее...
Свежие комментарии