Spec-Zone.ru › CakePHP 3.4

Класс 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

Краткое описание свойств

  • $_defaultConfig protected
    array
    Конфигурация по умолчанию
  • $_priority protected
    integer
    Приоритет по умолчанию для всех методов в этом фильтре

Унаследованные свойства

  • _config, _configInitialized

Краткое описание методов

  • __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
Экземпляр события.

Возвращает

mixed

implementedEvents()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
если попытка перезаписать существующую конфигурацию
END_OF_DOCUMENT_MARKER

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,
]

$_prioritysource

protected integer

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

10

© 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

Spec-Zone.ru

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