Вам нужно только заботиться о логической бизнес-логике, а операции с страницами и базой данных мы для вас инкапсулировали.
Этот проект разрабатывался в течение 3–4 лет. Его цель — только одна: изысканная простота.
Этот фреймворк больше подходит для независимых проектов, которые могут быть выполнены PHP-разработчиками, не очень хорошо знакомыми с фронтенд-разработкой. Есть следующие проблемы:
Основан на конфигурации: только один файл конфигурации может реализовать модуль.
Если вы использовали такие известные отечественные PHP-фреймворки, как thinkphp, то вы сможете его использовать.
Основные функции обычных PHP-фреймворков в основном присутствуют в этом фреймворке.
Конкретная алгоритмическая идея в основном включает инверсию зависимостей, шаблоны элементов, намерение вызвать, промежуточное ПО лука, гибкую маршрутизацию, особенности кодирования.
Это диаграмма рабочего процесса фреймворка.
Весь рабочий процесс фреймворка — это процесс обработки намерений.
Ядро
представляет собой контейнер
и иерархический менеджер конфигурации
.
Контейнер
автоматически возвращает подходящий объект службы в соответствии с зависимостями.
Иерархический менеджер конфигурации
управляет конфигурацией ядра, приложения и модуля по уровням. Контроллер получает информацию о конфигурации через модуль. Конфигурацию можно наследовать и модифицировать только на соответствующем уровне.
После запуска ядра будет создано специальное намерение запроса, и оно будет передано в намерении.
Намерение содержит команду, которая будет проанализирована маршрутизатором через намерение, а затем выполнена.
Намерение вызывает маршрутизатор через собственное ядро.
Запрос намерения — это особый вид намерения, который перед вызовом маршрутизатора для анализа команды вызывает диспетчер запросов для заполнения собственной команды. Затем после завершения процесса обработки намерения он вызывает ответчик для отправки ответа.
Маршрутизатор анализирует команду намерения и разбивает её на традиционную комбинацию модуль-контроллер-действие-параметр
:
//按照 /:module/:controller/:action/:params => []
/index/index/index/arg/value/param/value
// 解析为
[
module => index
controller => index
action => index
arg => value
param => value
]
Определение маршрута состоит из маршрутных элементов и маршрутных блоков.
:module
、:controller
、:action
、:params
— встроенные элементы маршрута.
Элементы маршрута можно настроить:
[
'module' => '[A-Za-z]+',
'controller' => '[A-Za-z]+',
'action' => '[A-Za-z]+',
'id' => '[0-9]+',
];
Блок маршрута определяется следующим образом:
[':module/word/:action' => ['controller'=>'hello']];
// 匹配 say/word/again 后结果为
[
'module' => 'say',
'controller'=> 'hello',
'action' => 'again'
];
// 不匹配 say/hi/again, say/word/123
Намерения обрабатываются в контроллере популярным промежуточным программным обеспечением лука. Ориентировано на интерфейс?
Во время выполнения намерение может вызывать другие намерения для получения необходимой информации.
Из соображений безопасности рекомендуется, чтобы методы бизнес-процессов контроллера были закрытыми и не вызывались напрямую, а должны вызываться через намерения.
Промежуточное программное обеспечение может выполнять множество задач, получая намерение. Таким образом, нет необходимости в глобальных переменных ядра, что также делает код более понятным и универсальным.
Другим ядром фреймворка является определение модулей с помощью шаблонных элементов, что позволяет выполнять общие функции без написания кода.
// Определение элемента
$element = [
'name' => 'name',
'label' => 'name',
'field' => 'name',
'column' => 'name',
'type' => 'int',
'holder' => 'int',
'view' => 'input',
'rules' => [
[],
[]
],
'display' => [],
];
// Определение коллекции
$collection = [
'name' => 'student',
'label' => 'student',
'table' => 'student',
'form' => 'student',
'validator' => [],
'mate' => [],
'elements' => []
];
// Определение модуля
$module = [
'name' => 'school',
'mate' => [],
'collections' => [],
'controllers' => [
// ...
'actions' => []
// ...
]
];
Инверсия зависимостей реализуется через ядро контейнера. Загрузка классов по умолчанию реализуется загрузчиком, конечно, вы можете использовать Composer.
Загрузчик поддерживает сопоставление пространства имён с путями:
[ 'J' => DIR ]
class \J\A\B => file DIR/J/A/B.php
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )