Класс 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, условия будут перепроверяться при вызовах обратных вызовов before и after, так как условия могут изменяться в течение цикла диспетчеризации.
- 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\Http\Response, он будет обработан в конце цикла события, не вызывая контроллер в результате. Это также повлияет на то, что событие after в диспетчере не будет вызвано.
Если возвращается 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 - Ключ для записи.
- смешанный
$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–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.4/class-Cake.Routing.DispatcherFilter.html