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

OSCHINA-MIRROR/dvaknheo-duckphp

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
tutorial-helper.md 20 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 13.03.2025 12:05 5f7b14b

Классы помощников

Важно, данная статья полезна для бизнес-инженеров

[toc]

Относительные классы

От простого к сложному, мы перечислим классы помощников.

Начало

Классы помощников являются классами, которые должны знать бизнес-инженеры. Мы приведём схему архитектуры.

arch_full.gv.svg Текстовая версия

           /-> Представление-->ViewHelper
Контроллер --> Бизнес ------------------------------ ---> Модель
         \         \   \               \  /                  \
          \         \   \-> (Бизнес)Библиотека ----> ExModel----------->ModelHelper
           \         \             \                
            \         ---------------->BusinessHelper
             \-->ControllerHelper

Вышеуказанная схема архитектуры не включает пространства имён.

Как бизнес-инженер, вы не можете использовать ничего из DuckPhp, будто пространство имён DuckPhp не существует. Исследование классов DuckPhp должно проводиться только ключевыми инженерами.Предположим, что ваш проект использует пространство имён LazyToChange.

  • При работе с моделью вы можете использовать LazyToChange\Helper\ModelHelper как помощник, называя его M.
  • При работе с бизнес-логикой вы можете использовать LazyToChange\Helper\BusinessHelper как помощник, называя его B.
  • При работе с контроллером вы можете использовать LazyToChange\Helper\ControllerHelper как помощник, называя его C.
  • При работе с представлением вы можете использовать LazyToChange\Helper\ViewHelper как помощник, называя его V.
  • Вы не должны использовать помощники из других уровней. Если вам это требуется, значит вы делаете что-то неправильно.
  • Для маленьких проектов можно использовать входной класс LazyToChange\System\App или даже DuckPhp\DuckPhp, который включает общие методы вышеупомянутых классов.
  • Класс App включает все методы помощников. Однако рекомендуется использовать методы помощников вместо использования методов помощников класса App. Пространство имен проекта LazyToChange можно настроить. Например, его можно изменить на LazyToChangeProject, TheBigOneProject и так далее.

См. опцию $options['namespace'].

Часто задаваемые вопросы

Вопрос: Почему этот метод нельзя найти в объявлении помощника класса?

Ответ: Обратитесь к методу GetExtendStaticMethodList() в соответствующем помощнике классе, поскольку магический метод __callStatic($name, $arguments) был переопределен. Реализация находится внутри этого метода.Вопрос: Почему мои результаты отличаются от приведённых здесь?

Ответ: "Главный инженер" может изменять реализацию всех методов.

Вопрос: Почему некоторые методы начинаются с большой буквы, а другие — со строчной?

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

Глобальные помощники

Глобальные помощники состоят из двух частей: функции для отладки и функции для вызова представлений. Все глобальные помощники DuckPhp имеют два нижних подчеркивания в начале имени и стараются минимизировать влияние на глобальное пространство имён.

Класс помощника моделей ModelHelper

Класс 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 бизнес-помощника

Класс 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 помощника контроллеров

Методы класса 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 — это продвинутый помощник, используемый только "ядровыми" инженерами. Он может использоваться в специальных бизнес-приложениях.

Этот раздел демонстрирует некоторые методы, находящиеся за пределами основного жизненного цикла приложения.### Системные замены

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, не являющиеся помощниками

Здесь представлены внутренние статические методы 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 )

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

1
https://api.gitlife.ru/oschina-mirror/dvaknheo-duckphp.git
git@api.gitlife.ru:oschina-mirror/dvaknheo-duckphp.git
oschina-mirror
dvaknheo-duckphp
dvaknheo-duckphp
master