Сразу предупреждаю я в php не гений, а в OOP тем более.
Сейчас стоят две задачи:
1) Сайт - простенький, просто выбор из БД и вывод статей.
2) Личный кабинет - идет как отдельный сайт.
Появилась мысль сделать свой framework, на котором сделать отдельно обе задачи.
На данный момент в framework реализовано:
1) Единая точка входа index.php
2) Из нее грузится engine.php
3) Он дефайнит переменные - папки и загружает список классов framework'а и инициализирует их
а) Logger - синглтон, отвечает за логгирование
б) Database - синлтон, отвечает за коннект базе
в) Loader - синглтон, отвечает за проверку и загрузку модулей (пока не ясно что грузить, читайте дальше)
г) Request - синглтон, отвечает за получение данных из Get, Post
д) DataManager - синглтон, отвечает за валидацию данных и за разбитие на массивы
е) Router - синглтон, отвечает за передачу управления опрееленному модулю (пока не ясно кому передает)
Не реализован, но нужен класс Template, отвечающий за отрисовку основного шаблона.
Касательно проекта "Сайт":
Есть модель БД.
Таблицы:
Block (информационные блоки, типа "Новости")
Category (категории статей)
CategoryBlock (сответствие блоков категориям)
Article (статья, Title, content, содержит CategoryID)
Menu (похоже на блок, но выводится не инфа, а ссылки на статьи данной категории)
То есть на данный момент грузится некий framework, который позвляет через классы загруженные engine.php работать с данными, логировать и т.д.
Первый вопрос состоит в том, достаточно ли этого, для дальнейшей разработки уже самих проектов (сайт и личный кабинет).
Второй вопрос это реализация логики. Мне пока не понятно как реализовать все в модулях. То есть если брать проект "сайт", то я думаю примерно так. Пользватель вводит в адресной строке адрес. Роутер разбирает данный адрес и запускает какой то модуль типа page, он в свою очередь, получает CategoryID, и ArticleID из роутера. Далее объект page создает объекты blocks, menu и article в сответствии с CategoryID и ArticleID, каждый из них себя выбирает из БД отрисовывает (типа MVC).
То есть в проекте "Сайт" передать управление одному модулю, а он уже все делает сам.
Не понятно как реализовать шаблоны, основной и допустим view для объекта article, block.
Сложность с взаимодействиями объектов в OOP и MVC в частности.
Сложность в понятии "модульность" и "компонентность" применительно к сайтам и php.
Вышеописанный framework, чем то похж на Joomla. Так вот в Joomla есть компоненты, модули, плагины + шаблон страницы.
Как это все там увязано?
Что грузится при обычном заходе на главную страницу компонент, модуль, плагины?
Какой компонент, модуль или плагин отрисовывает основной шаблон?
|