Hmvc В Пространстве Имен

В последнее время много говорят о шаблонах проектирования.

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.
В результате получилась небольшая структура HMVC. Модель не имеет значения, поэтому код не привожу, просто скажу, что склоняюсь к статическому классу.

Итак, самый первый класс Автозагрузка : Раскрыть

   

class Autoload {

Теги: #php #hmvc #пространство имен #пространства имен #пространства имен #CMS #php
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.