 |
Статья Pattern: Registry имеет непосредственно отношение к этой статье, советую ознакомиться перед прочтением. |
|---|
Паттерн ServiceLocator изначально спроектирован для Java и дает возможность находить сервисы, зная их имя. В Java для того чтоб найти Enterprise JavaBeans (EJB) или Java Message Service (JMS) нужно использовать JNDI API. Это накладывает на код некоторые ограничения, например операции поиска и создания компонентов служб могут быть сложными (ресурсоемкими) и могут использоваться периодически в различных клиентах приложения. Для этого ввели паттерн, который позволяет абстрагироваться от использования JNDI и скрытия сложностей создания исходного контекста, а также может повторно использоваться несколькими клиентами.
Читать далее...
 |
Статья более не актуальна, так как относилась к старому, самописному движку. |
|---|
Вот я и сделал наконец поиск по сайту, вообще еще много чего надо сделать, а то я даже страницы добавляю через MySQL. Сейчас поиск ищет по заголовку, описанию и собственно телу страницы, самое приятное в нем то, что в нем есть ранжирование результатов. Если кому-то интересно как такое сделать то читайте дальше.
Читать далее...
Переносить классы c phpclasses я начал с Cache Manager, а это второй класс под названием Request. Его я люблю не меньше, в основном за его гибкость, он позволяет проверить любую переменную переданную ему на соответствие шаблону. Фактически класс есть оберткой для функции preg_match(), но позволяет не задумываться о параметрах.
Читать далее...
 |
Подробное описание работы класса смотрите в предыдущей статье CORE. |
|---|
 |
Возможно вам будет интересна статья ServiceLocator, она имеет непосредственное отношение к этой статье. |
|---|
Решил обновить класс, но очень не хотел переписывать прошлую статью, она мне дорога как память :). Поэтому решил еще раз опубликовать свежий класс. Напомню или расскажу для тех, кто не заметил сверху ссылки на предыдущую версию, что класс реализует паттерн Registry. То есть это Singleton класс, имеющий в себе ссылки на все основные ресурсы сайта. Например, удобно получать ссылку на объект для работы с базой данных с помощью выражения Registry::extract('db') не заботясь о том где, как и когда он был создан.
Читать далее...
Я почему-то думал, что давно уже выложил в блоге свои классы опубликованные на phpclasses.org, а когда недавно хотел посмотреть один из них, оказалось, что их нет. А вот сейчас я собираюсь исправить этот недосмотр и начну с класса для кэширования страниц.
Читать далее...
Тут только что ASMO попросил помочь ему рассчитать знак зодиака зная timestamp даты рождения. Чего он тока на свой сайт не пихает))))
Мне чета вдруг захотелось написать что-то очень простое но элегантное.
Читать далее...
Некоторые рассуждения о шаблоне проектирования Factory, а так же примеры реализации в "домашних" условиях наиболее универсального метода.
Читать далее...
Для создания этого сайта мне нужен был класс для управления сессией так как я не хотел использовать обычный механизм, хранения в файлах, а использовать базу данных.
Прежде чем писать свой я решил обратиться к мудрости всезнающего Google и нашел более менее подходящий класс, написанный человеком по имени Robin Schuil. Он был простой и быстрый но использовал сразу несколько баз данных для хранения информации, поэтому я взялся его переделать.
Читать далее...
 |
Эта статья является демонстрацией примера приведенного в статье Registry |
|---|
Как и было условлено ранее, класс должен реализовывать паттерн Singleton, чтобы исключить возможность создания его копии.
Читать далее...
 |
Это теоритическая часть, практическую можно найти на странице CORE |
|---|
Ну я думаю стоит начать из далека... когда еще деревья были большими а колбаса вкусной...
Нет это слишком рано ;) Начнем с того что паттерны в программировании были придуманы никак не для PHP, а для Smalltalk. Ну а к PHPони были притянуты "за уши", с появлением 5-ой версии.
Идея паттерна Registry состоит в том что проект (читай : сайт) содержит много разнообразных классов, например класс для работы с БД и шаблонизатор. А теперь появился класс User который должен работать с БД и передавать данные шаблонизатору. Значит он должен знать о функциях SELECT и ASSIGN двух других классов. Классы можно было бы наследовать и получить этот доступ но наследовать в PHP можно только один класс, да и если проект большой то стоит ли наследовать 150 разных классов?! Значит надо передавать экземпляры классов в функции которые их используют, или еще лучше в конструктор а там присвоить их свойствам. А зачем передавать(?!) можно сразу создать новый экземпляр прямо в конструкторе User'a, допустим, а если при создании конструкторам нужно передавать параметры? Или можно использовать паттерн Singleton для того чтобы не пересоздавать объект каждый раз но это не всегда удобно. Ну, а что если, например вы решите сменить шаблонизатор с XTemplate на Smarty и придется искать и реплейсить все названия класса.
Читать далее...
Свежие комментарии