Класс 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, методы «до»/«после» будут вызваны.
При использовании сопоставителей 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
Возвращает список событий, на которые подписан этот фильтр. Диспетчер уведомляет о 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|string
$mergeнеобязательно false True для рекурсивного слияния, «shallow» для простого слияния, false для перезаписи, по умолчанию false.
Исключения
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.7/class-Cake.Routing.DispatcherFilter.html