Spec-Zone.ru › CakePHP 3.3

Класс DispatcherFilter

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

Подклассы этого класса используют соглашение об именовании класса с суффиксом Filter.

Ограничение фильтров определенными путями

Используя параметр for, можно ограничить пути запросов, к которым применяется фильтр. Как для события «до», так и для события «после» применяются те же условия. Например, если вы хотите, чтобы фильтр применялся только к запросам блога, можно сделать так:

$filter = new BlogFilter(['for' => '/blog']);

Когда вышеуказанный фильтр подключен к диспетчеру, он будет запускать свои методы beforeDispatch и afterDispatch только для запросов, начинающихся с /blog.

Для условия также можно использовать регулярное выражение, используя префикс preg:.

$filter = new BlogFilter(['for' => 'preg:#^/blog/\d+$#']);

Ограничение фильтров на основе условий

Помимо простого сопоставления по пути, вы можете использовать замыкание для сопоставления с произвольными условиями запроса или ответа. Например:

$cookieMonster = new CookieFilter([
  'when' => function ($req, $res) {
    // Custom code goes here.
  }
]);

Если ваше условие `when` возвращает true, методы `before`/`after` будут вызваны.

При использовании соответствия for или when, условия будут проверяться повторно в обработчиках «до» и «после», так как они могут измениться во время цикла диспетчеризации.

Cake\Routing\DispatcherFilter реализует Cake\Event\EventListenerInterface, использует Cake\Core\InstanceConfigTrait

Прямые подклассы

  • Cake\Routing\Filter\AssetFilter
  • Cake\Routing\Filter\ControllerFactoryFilter
  • Cake\Routing\Filter\LocaleSelectorFilter
  • Cake\Routing\Filter\RoutingFilter
Пространство имён: Cake\Routing
Расположение: Routing/DispatcherFilter.php

Краткое описание свойств

  • $_defaultConfig protected
    array
    Конфигурация по умолчанию
  • $_priority protected
    integer
    Приоритет по умолчанию для всех методов в этом фильтре

Унаследованные свойства

  • _config, _configInitialized

Краткое описание методов

  • __construct() public
    Конструктор.
  • afterDispatch() public

    Метод, вызываемый после того, как контроллер обработает запрос и сгенерирует ответ. В этот момент можно изменить объект ответа, так как он ещё не отправлен клиенту.

  • beforeDispatch() public

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

  • handle() public
    Метод обработки, применяющий условия и определяющий правильный метод для вызова.
  • implementedEvents() public

    Возвращает список событий, на которые этот фильтр подписан. Диспетчер уведомляет о двух разных событиях Dispatcher.before и Dispatcher.after. По умолчанию этот класс подписывается на метод preDispatch и postDispatch соответственно.

  • matches() public
    Проверка соответствия входящего запроса критериям этого фильтра.

Подробное описание методов

__construct()source public

__construct( array $config [] )

Конструктор.

Параметры

массив $config необязательно []
Настройки фильтра.

Исключения

Исключение InvalidArgumentException
Когда условия `when` не являются вызываемыми.

afterDispatch()source public

afterDispatch( Cake\Event\Event $event )

Метод, вызываемый после того, как контроллер обработает запрос и сгенерирует ответ. В этот момент можно изменить объект ответа, так как он ещё не отправлен клиенту.

Если возвращено значение false, событие будет остановлено, и другие слушатели уведомлены не будут. В качестве альтернативы можно вызвать $event->stopPropagation() для достижения такого же результата.

Параметры

Cake\Event\Event $event

объект-контейнер, имеющий ключи request и response в свойстве data.

beforeDispatch()source public

beforeDispatch( Cake\Event\Event $event )

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

Если возвращается экземпляр объекта Cake\Network\Response, он будет обработан в конце цикла события, и контроллер не будет вызван. Это также повлияет на то, что событие «после» не будет вызвано в диспетчере.

Если возвращено значение false, событие будет остановлено, и другие слушатели уведомлены не будут. В качестве альтернативы можно вызвать $event->stopPropagation() для достижения такого же результата.

Параметры

Cake\Event\Event $event

объект-контейнер, имеющий ключи request, response и additionalParams в свойстве data.

handle()source public

handle( Cake\Event\Event $event )

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

Параметры

Cake\Event\Event $event
Экземпляр события.

Возвращает

смешанное значение

implementedEvents()source public

implementedEvents( )

Возвращает список событий, на которые этот фильтр подписан. Диспетчер уведомляет о двух разных событиях Dispatcher.before и Dispatcher.after. По умолчанию этот класс подписывается на метод preDispatch и postDispatch соответственно.

Переопределите этот метод, чтобы подписываться только на интересующие вас события.

Возвращает

массив

Реализация

Cake\Event\EventListenerInterface::implementedEvents()

matches()source public

matches( Cake\Event\Event $event )

Проверка соответствия входящего запроса критериям этого фильтра.

Параметры

Cake\Event\Event $event
Событие для проверки соответствия.

Возвращает

булево значение

Методы, используемые из Cake\Core\InstanceConfigTrait

_configDelete()source protected

_configDelete( string $key )

Удаление одного ключа конфигурации

Параметры

строка $key
Ключ для удаления.

Исключения

Cake\Core\Exception\Exception
если пытаетесь перезаписать существующую конфигурацию

_configRead()source protected

_configRead( string|null $key )

Чтение переменной конфигурации

Параметры

строка или null $key
Ключ для чтения.

Возвращает

смешанное значение

_configWrite()source protected

_configWrite( string|array $key , mixed $value , boolean|string $merge false )

Запись переменной конфигурации

Параметры

строка или массив $key
Ключ для записи.
смешанное значение $value
Значение для записи.
булево или строка $merge необязательно false

True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.

Исключения

Cake\Core\Exception\Exception
если пытаетесь перезаписать существующую конфигурацию

config()source public

config( string|array|null $key null , mixed|null $value null , boolean $merge true )

Использование

Чтение всего конфига:

$this->config();

Чтение определённого значения:

$this->config('key');

Чтение вложенного значения:

$this->config('some.nested.key');

Установка определённого значения:

$this->config('key', $value);

Установка вложенного значения:

$this->config('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->config(['one' => 'value', 'another' => 'value']);

Параметры

string|array|null $key необязательно null
Ключ для получения/установки или массив настроек.
mixed|null $value необязательно null
Значение для установки.
boolean $merge необязательно true
Флаг рекурсивного слияния или перезаписи существующей конфигурации. По умолчанию true.

Возвращает

mixed
Значение конфигурации, или сам объект при операциях записи.

Выбрасывает

Cake\Core\Exception\Exception
При попытке установить неверный ключ.

configShallow()source public

configShallow( string|array $key , mixed|null $value null )

Слияние предоставленной конфигурации с существующей. В отличие от config() , которая выполняет рекурсивное слияние вложенных ключей, этот метод выполняет простое слияние.

Установка определённого значения:

$this->config('key', $value);

Установка вложенного значения:

$this->config('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->config(['one' => 'value', 'another' => 'value']);

Параметры

string|array $key
Ключ для установки или полный массив настроек.
mixed|null $value необязательно null
Значение для установки.

Возвращает


$this Объект самого себя.

Подробное описание свойств

$_defaultConfigsource

protected массив

Конфигурация по умолчанию

Эти значения сливаются с предоставленными пользователем при использовании класса. Опции when и for позволяют определить условия, которые проверяются перед вызовом вашего фильтра.

[
    'when' => null,
    'for' => null,
    'priority' => null,
]

$_prioritysource

protected целое число

Приоритет по умолчанию для всех методов в этом фильтре

10

© 2005–2017 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.3/class-Cake.Routing.DispatcherFilter.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API