1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bfgdqch-JFramework

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 9.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 08:11 5396402

Основанный на конфигурации PHP-фреймворк (с бэкендом)

Вам нужно только заботиться о логической бизнес-логике, а операции с страницами и базой данных мы для вас инкапсулировали.

Проектное введение

Этот проект разрабатывался в течение 3–4 лет. Его цель — только одна: изысканная простота.


Основные характеристики

  1. Весь код фреймворка ясен и прост.
  2. Соответствующее использование шаблонов проектирования повышает качество кода.
  3. Через конфигурацию можно реализовать общие интерфейсы для операций добавления, изменения, удаления и проверки логики.

Этот фреймворк больше подходит для независимых проектов, которые могут быть выполнены PHP-разработчиками, не очень хорошо знакомыми с фронтенд-разработкой. Есть следующие проблемы:

  1. Отсутствие тщательного тестирования.
  2. Отсутствие сложного стресс-тестирования.
  3. Автор не проходил систематическое обучение на крупных предприятиях.

Основан на конфигурации

Основан на конфигурации: только один файл конфигурации может реализовать модуль.

  1. В отличие от обычных фреймворков, основанных на строительных лесах, здесь вам не нужно самостоятельно повторять написание операторов добавления, изменения и удаления модулей или использовать инструменты для генерации соответствующих операторов. Этот фреймворк может даже не генерировать никакого кода модуля.
  2. Это не просто отображение на основе шаблонов. Возможно, у переднего и заднего концов есть только один или два файла шаблонов.

Быстрый фреймворк

Если вы использовали такие известные отечественные PHP-фреймворки, как thinkphp, то вы сможете его использовать.

Основные функции обычных PHP-фреймворков в основном присутствуют в этом фреймворке.


Принцип реализации

Конкретная алгоритмическая идея в основном включает инверсию зависимостей, шаблоны элементов, намерение вызвать, промежуточное ПО лука, гибкую маршрутизацию, особенности кодирования.


Особенности кодирования

  1. Различные функциональные компоненты независимы друг от друга.
  2. Не используются статические классы и глобальные переменные.

Рабочий процесс фреймворка

Это диаграмма рабочего процесса фреймворка.

Диаграмма рабочего процесса

Весь рабочий процесс фреймворка — это процесс обработки намерений.

Ядро представляет собой контейнер и иерархический менеджер конфигурации.

Контейнер автоматически возвращает подходящий объект службы в соответствии с зависимостями.

Иерархический менеджер конфигурации управляет конфигурацией ядра, приложения и модуля по уровням. Контроллер получает информацию о конфигурации через модуль. Конфигурацию можно наследовать и модифицировать только на соответствующем уровне.


Намерение вызвать

После запуска ядра будет создано специальное намерение запроса, и оно будет передано в намерении.

Намерение содержит команду, которая будет проанализирована маршрутизатором через намерение, а затем выполнена.

Намерение вызывает маршрутизатор через собственное ядро.

Запрос намерения — это особый вид намерения, который перед вызовом маршрутизатора для анализа команды вызывает диспетчер запросов для заполнения собственной команды. Затем после завершения процесса обработки намерения он вызывает ответчик для отправки ответа.


Простой пользовательский маршрут

Маршрутизатор анализирует команду намерения и разбивает её на традиционную комбинацию модуль-контроллер-действие-параметр:


//按照 /: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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/bfgdqch-JFramework.git
git@api.gitlife.ru:oschina-mirror/bfgdqch-JFramework.git
oschina-mirror
bfgdqch-JFramework
bfgdqch-JFramework
master