Spec-Zone.ru › CakePHP 3.1

Класс 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
Пространство имен: Cake\Routing
Расположение: Routing/DispatcherFilter.php

Подробное описание методов

__constructsource public

__construct( array $config [] )

Конструктор.

Параметры

массив $config необязательно []
Настройки для фильтра.

Исключения

InvalidArgumentException
Когда условия 'when' не вызываемы.

afterDispatchsource public

afterDispatch( Cake\Event\Event $event )

Метод, вызываемый после того, как контроллер обработал запрос и сгенерировал ответ. В этот момент можно изменить объект ответа, так как он еще не отправлен клиенту.

Если возвращено значение false, событие будет остановлено, и больше никаких слушателей не будут уведомлены. В качестве альтернативы можно вызвать $event->stopPropagation(), чтобы достичь того же результата.

Параметры

Cake\Event\Event $event
объект контейнера, содержащий ключи request и response в свойстве data.

beforeDispatchsource public

beforeDispatch( Cake\Event\Event $event )

Метод, вызываемый перед созданием контроллера и его вызовом для обработки запроса. Если используется приоритет по умолчанию, он будет вызван после того, как маршрутизатор проанализирует URL и установит параметры маршрутизации в объект запроса.

Если возвращается экземпляр объекта Cake\Network\Response, он будет обработан в конце цикла событий, не вызывая контроллер в результате. Это также приведет к тому, что событие after не будет вызвано в диспетчере.

Если возвращено значение false, событие будет остановлено, и больше никаких слушателей не будут уведомлены. В качестве альтернативы можно вызвать $event->stopPropagation(), чтобы достичь того же результата.

Параметры

Cake\Event\Event $event
объект контейнера, содержащий ключи request, response и additionalParams в свойстве data.

handlesource public

handle( Cake\Event\Event $event )

Метод обработчика, применяющий условия и выбирающий правильный метод для вызова.

Параметры

Cake\Event\Event $event
Экземпляр события.

Возвращает

mixed
смешанный тип

implementedEventssource public

implementedEvents( )

Возвращает список событий, за которыми следит этот фильтр. Диспетчер уведомляет о двух разных событиях Dispatcher.before и Dispatcher.after. По умолчанию этот класс будет подключать методы preDispatch и postDispatch соответственно.

Переопределяйте этот метод по своему усмотрению, чтобы отслеживать только интересующие вас события.

Возвращает

array
массив

Реализация

Cake\Event\EventListenerInterface::implementedEvents()

matchessource public

matches( Cake\Event\Event $event )

Проверка соответствия входящего запроса критериям этого фильтра.

Параметры

Cake\Event\Event $event
Событие для проверки соответствия.

Возвращает

boolean
логическое значение

Методы, используемые из Cake\Core\InstanceConfigTrait

_configDeletesource protected

_configDelete( string $key )

Удаление одного ключа конфигурации.

Параметры

строка $key
Ключ для удаления.

Исключения

Cake\Core\Exception\Exception
при попытке перезаписи существующей конфигурации

_configReadsource protected

_configRead( string|null $key )

Чтение переменной конфигурации.

Параметры

строка|null $key
Ключ для чтения.

Возвращает

mixed
смешанный тип

_configWritesource protected

_configWrite( string|array $key , mixed $value , boolean|string $merge false )

Запись переменной конфигурации.

Параметры

строка|массив $key
Ключ для записи.
смешанный тип $value
Значение для записи.
логическое значение|строка $merge необязательно false
Истина для рекурсивной замены, 'shallow' для простой замены, ложь для перезаписи, по умолчанию ложь.

Исключения

Cake\Core\Exception\Exception
при попытке перезаписи существующей конфигурации

configsource 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']);

Параметры

строка|массив|null $key необязательно null
Ключ для получения/установки или полный массив конфигураций.
смешанный тип|null $value необязательно null
Значение для установки.
логическое значение $merge необязательно true
Флаг для рекурсивной замены или перезаписи существующей конфигурации, по умолчанию истина.

Возвращает

mixed
Значение конфигурации, которое читается, или сам объект при операциях записи.

Исключения

Cake\Core\Exception\Exception
При попытке установить недопустимый ключ.

configShallowsource 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']);

Параметры

строка|массив $key
Ключ для установки или полный массив конфигураций.
смешанный тип|null $value необязательно null
Значение для установки.

Возвращает

mixed
сам объект

Резюме свойств

$_defaultConfigsource

protected array

Конфигурация по умолчанию

Эти значения объединяются с конфигурацией, предоставленной пользователем, при использовании класса. Параметры when и for позволяют определить условия, проверяемые перед вызовом вашего фильтра.

[
    'when' => null,
    'for' => null,
    'priority' => null,
]

$_prioritysource

protected integer

Приоритет по умолчанию для всех методов в этом фильтре

10

Свойства, используемые из Cake\Core\InstanceConfigTrait

$_configsource

protected array

Конфигурация во время выполнения

[]

$_configInitializedsource

protected boolean

Указывает, была ли конфигурация уже настроена значениями по умолчанию

false

© 2005–2016 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.
http://api.cakephp.org/3.1/class-Cake.Routing.DispatcherFilter.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API