Важно, данная статья полезна для бизнес-инженеров
[toc]
От простого к сложному, мы перечислим классы помощников.
DuckPhp\Helper\ViewHelper класс помощника представления DuckPhp\Helper\ViewHelperTrait
DuckPhp\Helper\ModelHelper класс помощника модели DuckPhp\Helper\ModelHelperTrait
DuckPhp\Helper\BusinessHelper класс помощника бизнеса DuckPhp\Helper\BusinessHelperTrait
DuckPhp\Helper\ControllerHelper класс помощника контроллера DuckPhp\Helper\ContorllerHelperTrait
DuckPhp\Helper\AdvanceHelper продвинутый класс помощника, который обычно не используется. DuckPhp\Helper\AdvanceHelperTrait
Классы помощников являются классами, которые должны знать бизнес-инженеры. Мы приведём схему архитектуры.
Текстовая версия
/-> Представление-->ViewHelper
Контроллер --> Бизнес ------------------------------ ---> Модель
\ \ \ \ / \
\ \ \-> (Бизнес)Библиотека ----> ExModel----------->ModelHelper
\ \ \
\ ---------------->BusinessHelper
\-->ControllerHelper
Вышеуказанная схема архитектуры не включает пространства имён.
Как бизнес-инженер, вы не можете использовать ничего из DuckPhp, будто пространство имён DuckPhp не существует. Исследование классов DuckPhp должно проводиться только ключевыми инженерами.Предположим, что ваш проект использует пространство имён LazyToChange.
См. опцию $options['namespace']
.
Вопрос: Почему этот метод нельзя найти в объявлении помощника класса?
Ответ: Обратитесь к методу GetExtendStaticMethodList()
в соответствующем помощнике классе, поскольку магический метод __callStatic($name, $arguments)
был переопределен. Реализация находится внутри этого метода.Вопрос: Почему мои результаты отличаются от приведённых здесь?
Ответ: "Главный инженер" может изменять реализацию всех методов.
Вопрос: Почему некоторые методы начинаются с большой буквы, а другие — со строчной?
Ответ: Методы, начинающиеся с большой буквы, являются часто используемыми, тогда как те, что начинаются со строчной, используются реже. В более продвинутой версии, методы с большой буквой соответствуют статическим функциям, а методы со строчной — динамическим. Однако они могут быть изменены.
Глобальные помощники состоят из двух частей: функции для отладки и функции для вызова представлений. Все глобальные помощники DuckPhp имеют два нижних подчеркивания в начале имени и стараются минимизировать влияние на глобальное пространство имён.
Класс ModelHelper используется в слое моделей. Он имеет три уникальных метода работы с базой данных.
Эти методы отсутствуют в классе помощника контроллеров ControllerHelper. Подробнее о том, как использовать объект Db, см. раздел про работу с базами данных.
Кроме того, есть два быстрых метода: SqlForPager
и SqlForCountSimply
, которые помогают при пагинации.
public static function Db($tag = null)
{
// Получение объекта Db
}
См. [DuckPhp\Component\DbManager::Db](Component-DbManager.md#Db).```markdown
## Базовый класс DbManager
```php
public static function DbForRead()
{
// Получение объекта Db для чтения
}
См. [DuckPhp\Component\DbManager::DbForRead](Component-DbManager.md#DbForRead).
public static function DbForWrite()
{
// Получение объекта Db для записи
}
См. [DuckPhp\Component\DbManager::DbForWrite](Component-DbManager.md#DbForWrite).
public static function SqlForPager(string $sql, int $pageNo, int $pageSize = 10): string
{
// SQL запрос для пагинации
}
public static function SqlForCountSimply(string $sql): string
{
// Простое преобразование SQL запроса для подсчета записей
}
Класс BusinessHelper
используется в бизнес-слое. Он состоит из трех методов конфигурации, двух событийных методов и двух других методов.
public static function Setting($key)
{
// Получение информации о настройках
}
public static function Config($key = null, $default = null, $file_basename = 'config')
{
// Получение конфигурации, если нет — то значение по умолчанию ($default).
// Если ключ ($key) отсутствует, то используется файл конфигурации (по умолчанию config).
}
public static function FireEvent($event, ...$args)
{
// Вызов события
}
public static function OnEvent($event, $callback)
{
// Привязка события
}
public static function Cache($object = null)
{
// Получение объекта кэша
}
public static function XpCall($callback, ...$args)
{
// Вызов функции. В случае возникновения ошибки возвращает её, в противном случае — обычное значение.
}
Методы класса HelperController
многочисленны и разнотипны, но понимание этих методов позволяет эффективно использовать класс.
Замена одноимённых $_GET / $_POST / $_REQUEST / $_COOKIE / $_SERVER. Если значения отсутствуют, возвращаются значения по умолчанию. Если ключ ($key) равен null, возвращается весь массив.
```php
public static function GET($key = null, $default = null);
public static function POST($key = null, $default = null);
public static function REQUEST($key = null, $default = null);
public static function COOKIE($key = null, $default = null);
public static function SERVER($key, $default = null);
public static function Render($view, $data = null);
Rendering
public static function Show($data = [], $view = '');
Отображение представления
public static function setViewHeadFoot($head_file = null, $foot_file = null);
Установка шапки и подвала страницы
public static function assignViewData($key, $value = null);
Назначение переменной представления. Используется в особых случаях.
public static function Setting($key);
Настройки являются чувствительными данными и не хранятся в системе контроля версий. Конфигурация же является незащищенной информацией.
public static function Config($key, $file_basename = 'config');
Чтение конфигурации из файла config/$file_basename.php
public static function Show302($url);
Переадресация на внутренний URL
public static function Show404();
Отображение страницы 404
public static function ShowJson($ret);
Отображение JSON-результата.### Опции маршрутизации
public static function Parameter($key, $default = null);
Похожий на суперглобальные переменные, получает хранящиеся данные.
public static function getPathInfo();
Получает текущее значение PathInfo. public static function getRouteCallingMethod(); Получает вызываемый метод маршрута, используется в конструкторе. public static function setRouteCallingMethod($method) Устанавливает вызываемый метод маршрута, используется при принудительной замене поведения по умолчанию для представлений.
Функции совпадают с одноимёнными системными функциями (header/setcookie/exit), цель - обеспечить совместимость.
public static function header($output, bool $replace = true, int $http_response_code = 0)
public static function setcookie(string $name, string $value = '', int $expires = 0, string $path = '/', string $domain = '', bool $secure = false, bool $httponly = false)
public static function exit($code = 0)
Класс пагинатора реализован через DuckPhp\Component\Pager
public static function pageNo($new_value = null)
Получает или устанавливает номер текущей страницы.
public static function pageSize($new_value = null)
Получает или устанавливает количество записей на странице.
public static function pageHtml($total, array $options = [])
Получает HTML пагинации, здесь $options — это опции, передаваемые классу Pager.
public static function assignExceptionHandler(array $classes, callable $callback = null)
Назначает обратный вызов для классов ошибок.
public static function setMultiExceptionHandler(array $classes, callable $callback)
Назначает один и тот же обратный вызов для нескольких классов ошибок.
public static function setDefaultExceptionHandler(callable $callback)
Назначает стандартный обработчик ошибок.
public static function dbCloseAll()
Ручное закрытие баз данных.
public static function xpCall($callback, ...$args)
Вызывает callback, если возникает ошибка, то возвращает объект ошибки. public static function FireEvent($event, ...$args) Вызывает событие.
public static function OnEvent($event, $callback)
Назначает обратный вызов для события.
public static function dumpAllRouteHooksAsString()
Выводит все хуки маршрутов в виде строки, используется для отладки.
AdvancedHelper — это продвинутый помощник, используемый только "ядровыми" инженерами. Он может использоваться в специальных бизнес-приложениях.
Этот раздел демонстрирует некоторые методы, находящиеся за пределами основного жизненного цикла приложения.### Системные замены
AdvancedHelper предлагает более полные системные замены, включая функции семейства session
.
#### Заголовок
**[Системная замена]** Заголовок функции для совместимости с режимом командной строки
`setcookie()`
**[Системная замена]** Функция `setcookie` для совместимости с режимом командной строки
`exit`
**[Системная замена]** Выходная функция для удобства управления
`set_exception_handler(callable $exception_handler)`
**[Системная замена]** Для специальных целей в Swoole
`register_shutdown_function(callable $callback, ...$args)`
**[Системная замена]**
`session_start(array $options = [])`
**[Системная замена]**
`session_id($session_id = null)`
**[Системная замена]**
`session_destroy()`
**[Системная замена]**
`session_set_save_handler(\SessionHandlerInterface $handler)`
isRunning()
Определяет, находится ли система в состоянии выполнения
isInException()
Определяет, находится ли система в состоянии исключения Определяет, находится ли система в состоянии исключения
CallCheckException($ex)
Вызов обработчика исключений, обычно не используется, а вместо этого следует разделу обработки исключений
Статические методы, присутствующие во всех помощниках.
GetExtendStaticStaticMethodList()
Используется для просмотра дополнительных статических методов текущего класса.
\_\_callStatic
Расширенный статический метод.
AssignExtendStaticMethod($key, $value = null)
Продвинутый метод.
CallExtendStaticMethod($name, $arguments)
Продвинутый метод.
Здесь представлены внутренние статические методы DuckPhp, которые не являются помощниками.
Blank()
Пустой метод, используемый для возможных особых случаев
On404()
Метод обработки ошибки 404
OnDefaultException()
Метод обработки исключения по умолчанию
OnDevErrorHandler()
Метод обработки ошибок типа Notice и других
RunQuickly()
Важный метод для быстрого запуска
system_wrapper_replace()
Замена системных функций по умолчанию
system_wrapper_get_providers()
Получение системных функций по умолчанию
Обычно проект расширяет помощники DuckPhp, создавая свои собственные помощники, а не используя помощники DuckPhp напрямую. Аналогично расширение для ModelHelper:
<?php
namespace LazyToChange\Helper;
use DuckPhp\Helper\ModelHelper as Helper;
class ModelHelper extends Helper
{
// Переопределите или добавьте свой код здесь
}
Если вы хотите изменить соответствующую реализацию, после изучения архитектуры системы DuckPhp обратитесь к DuckPhp\Core\App.
Если вы просто заменяете реализацию системы, найдите соответствующие функции в классах Helper и замените их.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )