Класс 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\Core\InstanceConfigTrait
Расположение: Routing/DispatcherFilter.php
Краткое описание свойств
-
$_defaultConfigprotectedКонфигурация по умолчаниюarray -
$_priorityprotectedПриоритет по умолчанию для всех методов в этом фильтреinteger
Унаследованные свойства
Краткое описание методов
- __construct() publicКонструктор.
- afterDispatch() public
Метод, вызываемый после того, как контроллер обработает запрос и сгенерирует ответ. В этот момент можно изменить объект ответа, так как он ещё не отправлен клиенту.
- beforeDispatch() public
Метод, вызываемый перед созданием и вызовом контроллера для обработки запроса. Если используется приоритет по умолчанию, он будет вызван после того, как маршрутизатор проанализирует URL и установит параметры маршрутизации в объект запроса.
- handle() publicМетод обработки, который применяет условия и определяет правильный метод для вызова.
- implementedEvents() public
Возвращает список событий, на которые подписывается этот фильтр. Диспетчер уведомляет о 2 разных событиях
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\Http\Response, он будет обработан в конце цикла событий, не вызывая контроллера в результате. Это также повлияет на то, что событие после не будет вызвано в диспетчере.
Если возвращается false, событие будет остановлено и больше никакие слушатели не будут уведомлены. В качестве альтернативы можно вызвать $event->stopPropagation() для достижения того же результата.
Параметры
-
Cake\Event\Event$event объект контейнера, содержащий ключи
request,responseиadditionalParamsв свойстве data.
handle()source public
handle( Cake\Event\Event $event )
Метод обработки, который применяет условия и определяет правильный метод для вызова.
Параметры
-
Cake\Event\Event$event - Экземпляр события.
Возвращает
mixedimplementedEvents()source public
implementedEvents( )
Возвращает список событий, на которые подписывается этот фильтр. Диспетчер уведомляет о 2 разных событиях Dispatcher.before и Dispatcher.after. По умолчанию этот класс привяжет метод preDispatch и postDispatch соответственно.
Переопределите этот метод по своему усмотрению, чтобы подписываться только на интересующие вас события.
Возвращает
массивРеализация
Cake\Event\EventListenerInterface::implementedEvents() matches()source public
matches( Cake\Event\Event $event )
Проверка соответствия входящего запроса критериям этого фильтра.
Параметры
-
Cake\Event\Event$event - Событие для сопоставления.
Возвращает
booleanМетоды, используемые из Cake\Core\InstanceConfigTrait
_configDelete()source protected
_configDelete( string $key )
Удаляет один ключ конфигурации.
Параметры
- строка
$key - Ключ для удаления.
Исключения
Cake\Core\Exception\Exceptionесли пытаетесь перезаписать существующую конфигурацию
_configRead()source protected
_configRead( string|null $key )
Считывает ключ конфигурации.
Параметры
- строка|null
$key - Ключ для чтения.
Возвращает
mixed_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Записывает ключ конфигурации.
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный
$value - Значение для записи.
- boolean|строка
$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']);
Устарело
3.4.0 используйте setConfig()/getConfig() вместо этого.Параметры
- 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->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
- string|array
$key - Ключ для установки или полный массив конфигураций.
- mixed|null
$valueнеобязательно null - Значение для установки.
Возвращает
$this
getConfig()source public
getConfig( string|null $key null , mixed $default null )
Возвращает конфигурацию.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение определенного значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
- string|null
$keyнеобязательно null - Ключ для получения или null для всей конфигурации.
- mixed
$defaultнеобязательно null - Значение возврата, когда ключ не существует.
Возвращает
mixedЗначение конфигурации, которое считывается.
setConfig()source public
setConfig( string|array $key , mixed|null $value null , boolean $merge true )
Устанавливает конфигурацию.
Использование
Установка определенного значения:
$this->setConfig('key', $value); Установка вложенного значения:
$this->setConfig('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Параметры
- string|array
$key - Ключ для установки или полный массив конфигураций.
- mixed|null
$valueнеобязательно null - Значение для установки.
- boolean
$mergeнеобязательно true - Включает ли рекурсивное слияние или перезапись существующей конфигурации, по умолчанию true.
Возвращает
$this
Исключения
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
Подробности свойств
$_defaultConfigsource
protected array
Конфигурация по умолчанию
Эти значения объединяются с предоставленными пользователем настройками при использовании класса. Опции when и for позволяют задать условия, которые проверяются перед вызовом вашего фильтра.
[
'when' => null,
'for' => null,
'priority' => null,
]
© 2005–2018 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.5/class-Cake.Routing.DispatcherFilter.html