sKaa, Спасибо учту . На самом деле это не оригинал кода, этот код я писал прямо на сайте и не заметил ошибки (в оригинальном Registry у меня еще есть ArrayAccess, но я думаю здесь это не очень важно).
Ничего нового, просто обычный синглтон. Я хотел спросить насчет методов getInstance() и get(): хорошо ли возвращать ссылки или лучше без них, как считаете? (Добавление)
Не, уже не надо сам разобрался (поэкспериментировал немного). Вот нормальный код:
так если уже есть массив переменных по которым модули дергаются зачем какой то буфер еще - в него и пиши ключ-значение
Сори, что-то я спать хочу, соображаю не очень...
caballero пишет:
это каким таким чудом два запроса. Данные могут быть довольно сложные - иногда и пятью не обойдешся - посмотри на форум например
Моя CMS будет предназначена (пока что) для сайтов-визиток. А всю информацию о страницах я буду (по крайней мере постараюсь) держать в одной таблице, но даже если она будет в нескольких таблицах, то буду юзать JOIN'ы, чтобы максимально сократить количество запросов.
А если макрос в шаблоне объявлен более одного раза, как поступает "шаблонизатор", еще раз обращается к модулю за информацией?
Если да, то стоит подумать о буфере.
Да, насчет буфера подумаю.
DeepVarvar пишет:
Сколько запросов к БД на страницу ожидается?
Два запроса: один на выборку самой страницы и еще один на выборку всех ее дочерних страниц.
Да это как раз они. В каждой папке с модулем присутствует файл view.php. Последняя строчка в нем возвращает обработанный результат, который нужно вставить в нужное место в шаблоне. А то что пробегается по всех папках, это не вьюшка это у меня как бы шаблонизатор, кстати он пробегается не по всех папках. Он ищет переменные в шаблоне (например переменная меню выглядит так: {menu}), и записывает в массив. И получается как бы список модулей которые нужно использовать.
DeepVarvar, Здесь вьюшка не такая как у MVC. Здесь файл view.php просто возвращает результат работы модуля (т.е. обработанный результат, html-код, а не сырой результат), и вьюшка здесь как бы действительно делает запросы. Наверное мне лучше ее переименовать .
caballero, у меня класс Template для сбора переменных пробегается по всех каталогах внутри каталога modules проверяет есть ли там файлик view.php, если есть то подключает:
И кстати как во всех этих фрейморках встает проблеммма а кто будет всеv этим управлять? Кто и как соберет в кучу страницу на которую как правило выводятся данные нескольких модулей? и д.
Ну для этого я решил сделать класс Template. Это будет выглядеть типа так:
В остальном я так и не понял чего вы хотите сказать или сделать. Может вам сначала объяснить что и как хотите сделать без специальных терминов, а потом будет видно где там какие паттерны или классы. Потому как вообщне непонятно о чем речью.
Мне нужно создать маленькую CMS (если ее так можно назвать) систему. Логика такова, что каждый модуль состоит из ядра самого модуля, вида и пользовательского интерфейса (последние два необязательны). Страницы - тоже модуль (т.е. не сами страницы а модуль для создания/удаления/редактирования /выборки/и т.д. их). Этот модуль будет состоять из ядра (функции для выборки, создания, удаления, редактирования страниц), пользовательского интерфейса (грубо говоря - страница в админке) и вида (вид это как бы просто переменная в которой содержится обработанный результат выборки страниц(ы), для того чтобы шаблонизатор мог подставить эту переменную в шаблон). Вот такая вот логика.
Разве это важно? Это из разряда: ф-ций больше чем массивов...
ОК, тогда еще хочу спросить одну вещь, может немного тупой вопрос, но как называть эти объекты, например объект класса Pages, стоит ли называть $pages или лучше вообще делать так: Pages::method(), ну или Pages::getInstance()->method() (Добавление) caballero, да, я неудачно сопоставил, я имел ввиду, если например использовать абстрактный Pages, то сам класс будет выступать в роли... не знаю как сказать, просто получится что мы не можем создать объект данного класса, но можем работать с его статическими методами и переменными, и получается как бы только одно хранилище. В случае с синглтон мы можем создать только один объект данного класса и получится тоже как бы одно хранилище. Например я видел что для работы с БД одни используют синглтон а другие - абстракцию. Ну и я подумал, что они все-таки чем-то схожи жруг с другом (Добавление)
P.S. Я знаю что Singleton это паттерн, а абстрактный класс - это абстрактный класс.
Паттерны выглядят правильно и логично только в теории.
Да вы правы, на практике не все так логично как кажется... И я уже передумал насчет ActiveRecord
У меня появился еще один вопрос: хорошо ли юзать абстрактный (или синглтон) класс для работы со страницами? Это как бы самый подходящий вариант получается, но тогда получается классов больше чем объектов, и мне интересно будет ли это еще считаться нормальным ООП или это уже не то?