Класс DispatcherFilter
Этот абстрактный класс представляет собой фильтр, применяемый к циклу диспетчера. Он действует как обработчик событий, позволяющий изменять запрос или ответ по мере необходимости, прежде чем они будут обработаны контроллером или после того, как тело ответа уже будет построено.
Подклассы этого класса используют соглашение об именовании классов с суффиксом Filter.
Ограничение фильтров определенными путями
Используя опцию for, вы можете ограничить пути запросов, к которым применяется фильтр. Условия применяются как к событию before, так и к событию after. Например, если вы хотите применить фильтр только к запросам блога, вы можете сделать так:
$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
Смесь: \Cake\Core\InstanceConfigTrait
Расположение: Routing/DispatcherFilter.php
Краткое описание свойств
-
$_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 - Ключ для записи.
- mixed
$value - Значение для записи.
- boolean|строка
$mergeнеобязательно false Истина для рекурсивного слияния, 'shallow' для простого слияния, ложь для перезаписи, по умолчанию ложь.
Исключения
Cake\Core\Exception\Exceptionпри попытке перезаписать существующую конфигурацию
config()source public deprecated
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–present 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.6/class-Cake.Routing.DispatcherFilter.html