Класс 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
Возвращает список событий, на которые подписывается этот фильтр. Диспетчер уведомляет о двух разных событиях
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( )
Возвращает список событий, на которые подписывается этот фильтр. Диспетчер уведомляет о двух разных событиях 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 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Данные конфигурации по указанному ключу или null, если ключ не существует.
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.8/class-Cake.Routing.DispatcherFilter.html