В последнее время много говорят о шаблонах проектирования.
MVC , практически все популярные PHP-фреймворки уже давно перешли на эту схему.
Что касается Кохана , то начиная с 3 версии реализована иерархическая схема MVC — ХМВК .
Преимущества HMVC всем очевидны и мы не будем здесь их обсуждать.
Я, как человек, желающий сменить статус «программиста-любителя» на «профессионального программиста», решил, что уже достаточно изучил PHP и пора начинать работать с фреймворками.
Выбор моего самого первого фреймворка пал на Kohana, поскольку он реализует HMVC и вообще его хвалят за простоту.
На деле все оказалось не просто, но что особенно раздражало, так это отсутствие изоляции триад MVC; триады были разбиты на части и разложены по разным папкам.
В моем понимании триада Модель-Представление-Контроллер , должен быть изолирован от других триад и располагаться в той же папке, конечно, это можно было бы реализовать в Kohana, но выглядело бы все очень «коряво» и запутанно.
До сих пор было непонятно, почему не была использована такая замечательная возможность.
PHP как пространство имен? Я просмотрел еще несколько HMVC-фреймворков, но ни один из них мне не понравился.
Тогда я решил реализовать HMVC самостоятельно.
Я сразу установил несколько директив:
- Необходимо использовать пространство имен
- Автозагрузка классов работает в пространстве имен
- Вы можете добавить несколько папок в автозагрузку
- У каждого приложения есть своя папка, куда устанавливается автозагрузка.
- Каждая триада, включая шаблоны, помещается в отдельную папку, соответственно расположенную в собственном пространстве имён.
- По умолчанию части MVC называются своими именами.
Контроллер , Модель И Вид , каждая папка триады должна иметь папку шаблоны для шаблонов
- Очень простая маршрутизация: URI просто разбивается на массив.
- Контроллер выглядит как Кохана_Контроллер
- Контроллер получает от него информацию о том, что требуется, в конструкторе, анализирует информацию массива URI, а затем запускает метод действие()
- Метод действие() проверяет методы объекта и запускается соответственно действие_действие()
- Генерация HTML осуществляется с помощью метода контроллера оказывать()
- Маршрутизацию осуществляет расширенный контроллер, он разбивает URI на массив, сначала проверяет его действия , если не находит, то ищет зарегистрированный контроллер
- Результат модели сохраняется в контроллере и передается в Вид , при создании в методе контроллера оказывать()
- Метод действие() общедоступный созданный контроллер можно запустить снова и сгенерировать HTML
- Вид выглядит как Кохана_View , для применения, Вид необходимо «подтянуть» в глобальное пространство имен с помощью наследования, заодно немного настроив все остальное Вид должны быть наследниками глобального Вид
- Контроллеры И Вид должны знать в какой папке и в каком пространстве имён они находятся, для этого они наследуются от специального класса ИмяSpaceAdapter , это необходимо для корректного поиска Вид из контроллера, а также из папки шаблоны от родителя Вид
- Основным шаблоном для каждой триады является шаблон.
php
- Контроллеры автоматически передают данные Вид мой действие , на основе этой информации Вид из основного шаблона шаблон.
php самостоятельно ищет необходимый шаблон действие.
php , поэтому не должно быть action_template() , это приведет к зацикливанию шаблонов
- Для администрирования вы можете создавать шаблоны с префиксом admin_action.php , который можно вызвать только в том случае, если установлена константа ADMIN.
Итак, самый первый класс Автозагрузка : Раскрыть
Теги: #php #hmvc #пространство имен #пространства имен #пространства имен #CMS #phpclass Autoload {
-
Tesla Motors Сменила Название На Tesla
19 Oct, 24 -
Текстовая Трансляция Конференции Build 2016
19 Oct, 24 -
Мотивация Сотрудников
19 Oct, 24 -
Великобритания, Транспорт
19 Oct, 24