Класс 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
Краткое описание свойств
-
$_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Когда условия `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,
]
© 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