Класс 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.
}
]); Если ваше условие «когда» возвращает true, методы «до»/«после» будут вызваны.
При использовании сопоставителей 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
Краткое описание свойств
-
$_defaultConfigprotectedКонфигурация по умолчаниюarray -
$_priorityprotectedПриоритет по умолчанию для всех методов в этом фильтреinteger
Унаследованные свойства
Краткое описание методов
- __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Когда условия 'когда' не вызываемый метод.
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 - Экземпляр события.
Возвращает
mixedimplementedEvents()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 - Событие для сопоставления.
Возвращает
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 - Ключ для записи.
- mixed
$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']);
Параметры
- 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 array
Значения по умолчанию для конфига
Они объединяются с пользовательским конфигом при использовании класса. Опции when и for позволяют определить условия, которые проверяются перед вызовом вашего фильтра.
[
'when' => null,
'for' => null,
'priority' => null,
]
© 2005–2016 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.
http://api.cakephp.org/3.2/class-Cake.Routing.DispatcherFilter.html