Rammstein
PHPClub::News
Идеальная архитектура сайта
Возникла такая проблема - несколько раз переписываю движок для сайта по причине неправильности подхода. Сейчас это уже хоть что-то. Первые две попытки были связаны с созданием actions, т.е. на каждой странице инициализируется один модуль, но это было давно и не правда, т.к. давно уже понял, что это не приемлемо для портала.
test.gm.rikt.ru - последнее из того что делаю. Немного взял у Котерова. Фактически все действия вызывают из шаблона. На всё про всё отводится один контроллер, который отвечает за логику выбора имени шаблона и (пока это на соплях, но всёже) попытка разобрать ЧПУ. Модули - по сути обычные plugin'ы Smarty. За исключением того, что фактически плагин один - load_module, который уже по параметру name загружает другие plugin'ы. Смысл этого в том, чтобы палгины не зависели от шаблонизатора.
Вроде бы всё хорошо, НО при попытке сделать модули более универсальными - в шаблон переходит слишком много логики! В итоге получаем такого рода строки в шаблонах:
{capture name="sql"}is_on=1 AND date>'{$URL_PATTERN_MATCHES.1}{if strlen($URL_PATTERN_MATCHES.2) == 2}{$URL_PATTERN_MATCHES.2}{else}0{$URL_PATTERN_MATCHES.2}{/if}{if strlen($URL_PATTERN_MATCHES.3) == 2}{$URL_PATTERN_MATCHES.3}{else}0{$URL_PATTERN_MATCHES.3}{/if}000000' AND date<'{$URL_PATTERN_MATCHES.1}{if $URL_PATTERN_MATCHES.2 > 9}{$URL_PATTERN_MATCHES.2}{else}0{$URL_PATTERN_MATCHES.2}{/if}{if $URL_PATTERN_MATCHES.3 > 9}{$URL_PATTERN_MATCHES.3}{else}0{$URL_PATTERN_MATCHES.3}{/if}235959'{/capture} от которых дизайнер повесится.
По сути все модули делают одно и то же - выбирают из БД определённые записи, присоединяют данные из других таблиц. Как бы это всё сделать проще?
Во-первых это скорее всего что-то типа PEAR_DataObjects и создание универсальных модулей, способных выводить объекты по определённым правилам. ВОТ ЭТО ГЛАВНАЯ ПРОБЛЕМА - универсальные модули и объекты. Это я и предлагаю обсудить.
В простейшем случае это:
- Вывод списка объектов по шаблону с ограничениями на количество записей
- Вывод отдельного объекта по шаблону.
Опять же что делать с условиями? Безопасность?
Появились вопросы - задавайте. Я тут собрал слишком много в одну кучу и понять это будет достаточно сложно
Возникла такая проблема - несколько раз переписываю движок для сайта по причине неправильности подхода. Сейчас это уже хоть что-то. Первые две попытки были связаны с созданием actions, т.е. на каждой странице инициализируется один модуль, но это было давно и не правда, т.к. давно уже понял, что это не приемлемо для портала.
test.gm.rikt.ru - последнее из того что делаю. Немного взял у Котерова. Фактически все действия вызывают из шаблона. На всё про всё отводится один контроллер, который отвечает за логику выбора имени шаблона и (пока это на соплях, но всёже) попытка разобрать ЧПУ. Модули - по сути обычные plugin'ы Smarty. За исключением того, что фактически плагин один - load_module, который уже по параметру name загружает другие plugin'ы. Смысл этого в том, чтобы палгины не зависели от шаблонизатора.
Вроде бы всё хорошо, НО при попытке сделать модули более универсальными - в шаблон переходит слишком много логики! В итоге получаем такого рода строки в шаблонах:
{capture name="sql"}is_on=1 AND date>'{$URL_PATTERN_MATCHES.1}{if strlen($URL_PATTERN_MATCHES.2) == 2}{$URL_PATTERN_MATCHES.2}{else}0{$URL_PATTERN_MATCHES.2}{/if}{if strlen($URL_PATTERN_MATCHES.3) == 2}{$URL_PATTERN_MATCHES.3}{else}0{$URL_PATTERN_MATCHES.3}{/if}000000' AND date<'{$URL_PATTERN_MATCHES.1}{if $URL_PATTERN_MATCHES.2 > 9}{$URL_PATTERN_MATCHES.2}{else}0{$URL_PATTERN_MATCHES.2}{/if}{if $URL_PATTERN_MATCHES.3 > 9}{$URL_PATTERN_MATCHES.3}{else}0{$URL_PATTERN_MATCHES.3}{/if}235959'{/capture} от которых дизайнер повесится.
По сути все модули делают одно и то же - выбирают из БД определённые записи, присоединяют данные из других таблиц. Как бы это всё сделать проще?
Во-первых это скорее всего что-то типа PEAR_DataObjects и создание универсальных модулей, способных выводить объекты по определённым правилам. ВОТ ЭТО ГЛАВНАЯ ПРОБЛЕМА - универсальные модули и объекты. Это я и предлагаю обсудить.
В простейшем случае это:
- Вывод списка объектов по шаблону с ограничениями на количество записей
- Вывод отдельного объекта по шаблону.
Опять же что делать с условиями? Безопасность?
Появились вопросы - задавайте. Я тут собрал слишком много в одну кучу и понять это будет достаточно сложно