Класс CakeRequest
Класс, который помогает обернуть информацию о запросе и особенности отдельного запроса. Предоставляет методы, обычно используемые для интроспекции заголовков запроса и тела запроса.
Имеет интерфейс массива и объекта. Вы можете получить доступ к параметрам фреймворка, используя индексы:
$request['controller'] или $request->controller.
- CakeRequest реализует ArrayAccess
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: MIT License
Расположение: Cake/Network/CakeRequest.php
Резюме свойств
-
$_detectorsprotectedВстроенные детекторные механизмы, используемые сarrayis(), можно изменить с помощьюaddDetector(). -
$_inputprotectedstringКопия php://input. Поскольку этот поток может быть прочитан только один раз в большинстве SAPI, сохраняется его копия, чтобы пользователям не нужно было об этом беспокоиться.
-
$basepublicБазовый URL-путь.string -
$datapublicarrayМассив данных POST. Будет содержать данные формы, а также загруженные файлы. Входные данные с префиксом «data» будут иметь префикс «data» удален. Если есть перекрытие между входными данными с префиксом «data» и без него, значение с префиксом «data» будет иметь приоритет.
-
$herepublicПолный адрес текущего запросаstring -
$paramspublicМассив параметров, разобранных из URL.array -
$querypublicМассив аргументов строки запросаarray -
$urlpublicСтрока URL, используемая для запроса.string -
$webrootpublicСегмент пути webroot для запроса.string
Резюме методов
- __call() publicОбработчик отсутствующего метода, обрабатывает обертки методов старого типа isAjax()
- __construct() publicКонструктор
- __get() publicМагический метод get позволяет получить доступ к разобранным параметрам маршрутизации непосредственно к объекту.
- __isset() public
Магический метод isset позволяет выполнять проверки isset/empty для параметров маршрутизации.
- _acceptHeaderDetector() protectedОпределяет, присутствует ли определённый заголовок accept.
- _base() protectedВозвращает базовый URL и устанавливает правильный webroot
- _environmentDetector() protectedОпределяет, присутствует ли определённая переменная среды.
- _extensionDetector() protectedОпределяет, присутствует ли расширение URL.
- _headerDetector() protectedОпределяет, присутствует ли определённый заголовок.
- _paramDetector() protectedОпределяет, присутствует ли определённый параметр запроса.
- Разбирает заголовки Accept* с параметрами квалификатора.
- _processFileData() protected
Рекурсивно обходит массив FILES, перестраивая данные в осмысленную и пригодную для использования структуру.
- _processFiles() protectedОбрабатывает $_FILES и помещает данные в объект.
- _processGet() protectedОбрабатывает параметры GET и помещает их в объект.
- _processPost() protected
обрабатывает данные post и устанавливает имеющиеся данные в объект. Обработанные данные доступны в
$this->data - _readInput() protectedСчитывает данные из php://input, имитируется в тестах.
- _url() protected
Получить URI запроса. Сначала ищет в PATH_INFO, так как это точное значение, подготовленное PHP. После этого проверяются REQUEST_URI, PHP_SELF, HTTP_X_REWRITE_URL и argv в таком порядке. В каждой из этих переменных сервера удаляются базовый путь и строка запроса
- Получить языки, поддерживаемые клиентом, или проверить, поддерживается ли определённый язык.
- accepts() public
Определить, какие типы содержимого принимает клиент, или проверить, принимает ли он определённый тип содержимого.
- addDetector() public
Добавить новый детектор в список детекторов, которые может использовать запрос. Можно задать различные форматы и типы детекторов.
- addParams() public
Добавить параметры в набор разобранных параметров запроса. Это перезапишет все существующие параметры. Это изменяет доступные параметры через
$request->params. - addPaths() public
Добавить пути в переменные путей запроса. Это перезапишет все существующие пути. Предлагает лёгкий способ изменения, здесь, webroot и base.
- allowMethod() public
Разрешить только определённые методы HTTP-запроса. Если метод запроса не совпадает, будет отображено сообщение об ошибке 405, и будет установлен требуемый заголовок ответа "Allow".
- clientIp() publicПолучить IP-адрес, используемый или заявленный клиентом.
- contentType() publicПолучить тип содержимого, используемый в этом запросе.
- data() public
Предоставляет чтение/запись доступа к
$this->data. Позволяет использовать синтаксис, похожий наCakeSession, для чтения данных post. - domain() publicПолучить имя домена и включить сегменты $tldLength tld.
- Считать HTTP-заголовок из информации о запросе.
- here() publicПолучить значение текущего URL запроса. Будет включать именованные параметры и аргументы строки запроса.
- host() publicПолучить хост, на котором был обработан запрос.
- input() public
Считывать данные из
php://input. Полезно при работе с содержимым тела запроса XML или JSON. - is() publicПроверить, является ли запрос определённого типа.
- isAll() publicПроверить, соответствует ли запрос всем заданным типам.
- method() public
Получить HTTP-метод, используемый для данного запроса. Есть несколько способов указать метод.
- offsetExists() publicРеализация isset() для доступа к массиву.
- offsetGet() publicРеализация чтения для доступа к массиву.
- offsetSet() publicРеализация записи для доступа к массиву.
- offsetUnset() publicРеализация unset() для доступа к массиву.
- onlyAllow() publicПсевдоним CakeRequest::allowMethod() для обратной совместимости.
- param() publicБезопасный доступ к значениям в $this->params.
- parseAccept() public
Разбор заголовка HTTP_ACCEPT и возвращение отсортированного массива с типами содержимого в качестве ключей и значениями pref.
- query() public
Предоставляет доступ для чтения к
$this->query. Позволяет использовать синтаксис, похожий наCakeSession, для чтения данных строки запроса URL. - referer() publicВозвращает referer, который направил данный запрос.
- setInput() public
Изменить данные, изначально из
php://input. Полезно для изменения данных json/xml в middleware или DispatcherFilters перед попаданием в RequestHandlerComponent. - subdomains() publicПолучить поддомены для хоста.
Подробное описание методов
__call()source public
__call( string $name , array $params )
Обработчик отсутствующего метода, обрабатывает обертки методов старого типа isAjax() type methods
Параметры
- string
$name - Вызываемый метод
- array
$params - Массив параметров для вызова метода
Возвращает
mixedИсключения
CakeExceptionпри вызове недопустимого метода.
__construct()source public
__construct( string $url null , boolean $parseEnvironment true )
Конструктор
Параметры
- string
$urlнеобязательно null - Обрезанная строка URL для использования. Не должна содержать базовый путь приложения.
- boolean
$parseEnvironmentнеобязательно true - Установить в false, чтобы не автоматически анализировать среду. т.е. GET, POST и FILES.
__get()source public
__get( string $name )
Магический метод get позволяет получить доступ к разобранным параметрам маршрутизации непосредственно к объекту.
Позволяет получить доступ к $this->params['controller'] через $this->controller
Параметры
- string
$name - Доступное свойство.
Возвращает
mixedЛибо значение параметра, либо null.
__isset()source public
__isset( string $name )
Магический метод isset позволяет проверять параметры маршрутизации на isset/empty.
Параметры
- строка
$name - Доступное свойство.
Возвращает
booleanСуществование
_acceptHeaderDetector()source protected
_acceptHeaderDetector( array $detect )
Определяет, присутствует ли определённый заголовок accept.
Параметры
- массив
$detect - Массив параметров детектора.
Возвращает
booleanСоответствует ли запрос проверяемому типу.
_base()source protected
_base( )
Возвращает базовый URL и устанавливает правильный webroot
Если CakePHP вызывается с index.php в URL, даже если URL-перезапись активирована (и, следовательно, не нужна), он отбрасывает ненужную часть от $base для предотвращения проблемы #3318.
Возвращает
строкаБазовый URL
_environmentDetector()source protected
_environmentDetector( array $detect )
Определяет, присутствует ли определённая переменная окружения.
Параметры
- массив
$detect - Массив параметров детектора.
Возвращает
booleanСоответствует ли запрос проверяемому типу.
_extensionDetector()source protected
_extensionDetector( array $detect )
Определяет, присутствует ли расширение URL.
Параметры
- массив
$detect - Массив параметров детектора.
Возвращает
booleanСоответствует ли запрос проверяемому типу.
_headerDetector()source protected
_headerDetector( array $detect )
Определяет, присутствует ли определённый заголовок.
Параметры
- массив
$detect - Массив параметров детектора.
Возвращает
booleanСоответствует ли запрос проверяемому типу.
_paramDetector()source protected
_paramDetector( array $detect )
Определяет, присутствует ли определённый параметр запроса.
Параметры
- массив
$detect - Массив параметров детектора.
Возвращает
booleanСоответствует ли запрос проверяемому типу.
_parseAcceptWithQualifier()source protected static
_parseAcceptWithQualifier( string $header )
Разбирает заголовки Accept* с параметрами квалификатора.
Извлекаются только квалификаторы, все другие расширения accept будут отброшены, так как они редко используются.
Параметры
- строка
$header - Заголовок для разбора.
Возвращает
массив_processFileData()source protected
_processFileData( string $path , array $data , string $field )
Рекурсивно обходит массив FILES, перестраивая данные в понятную и пригодную для использования структуру.
Параметры
- строка
$path - Точечная разделительная строка для вставки $data.
- массив
$data - Данные для обхода/вставки.
- строка
$field - Идентификатор конечного поля, который является ключом верхнего уровня в $_FILES.
_processGet()source protected
_processGet( )
Обрабатывает параметры GET и перемещает данные в объект.
_processPost()source protected
_processPost( )
обрабатывает данные post и устанавливает имеющиеся данные в объект. обработанные данные доступны в $this->data
Объединяет переменные POST с префиксом data, и без префикса в один массив. Переменные с префиксом data перезапишут переменные без префикса.
Если у вас есть смешанные значения POST, будьте осторожны, чтобы не создавать ключи верхнего уровня с числовыми значениями, содержащими массивы. Hash::merge() используется для слияния данных, и у него могут быть неожиданные последствия в этой ситуации.
_readInput()source protected
_readInput( )
Считывает данные из php://input, имитируется в тестах.
Возвращает
строкаСодержимое php://input
_url()source protected
_url( )
Получает URI запроса. В первую очередь ищет PATH_INFO, так как это точное значение, подготовленное PHP. После этого проверяются REQUEST_URI, PHP_SELF, HTTP_X_REWRITE_URL и argv в таком порядке. Каждая из этих переменных сервера содержит базовый путь и удалённые строки запросов
Возвращает
строкаURI Путь запроса CakePHP, к которому осуществляется доступ.
acceptLanguage()source public static
acceptLanguage( string $language null )
Получает языки, принятые клиентом, или проверяет, принят ли определённый язык.
Получить список принятых языков:
CakeRequest::acceptLanguage(); ``` Check if a specific language is accepted:
CakeRequest::acceptLanguage('es-es'); ```
Параметры
- строка
$languageнеобязательно null - Язык для проверки.
Возвращает
смешанный типЕсли $language предоставлен, возвращает boolean. В противном случае возвращает массив принятых языков.
accepts()source public
accepts( string $type null )
Определяет, какие типы контента принимает клиент, или проверяет, принимает ли он определённый тип контента.
Получить все типы:
$this->request->accepts();
Проверить наличие одного типа:
$this->request->accepts('application/json');
Этот метод отсортирует возвращаемые типы контента по значениям предпочтений, указанным клиентом.
Параметры
- строка
$typeнеобязательно null - Тип контента для проверки. Установите null, чтобы получить все типы контента, принимаемые клиентом.
Возвращает
смешанный типВозвращает либо массив всех типов, принимаемых клиентом, либо boolean, если клиент принимает указанный тип.
addDetector()source public
addDetector( string $name , array $options )
Добавляет новый детектор в список детекторов, которые может использовать запрос. Можно задавать различные форматы и типы детекторов.
Сравнение значений переменных окружения
Сравнение значений переменных окружения сравнивает значение, полученное из env() со известным значением. Значение переменной окружения сравнивается на равенство с предоставленным значением.
Например addDetector('post', array('env' => 'REQUEST_METHOD', 'value' => 'POST'))
Сравнение значений по шаблону
Сравнение значений по шаблону позволяет сравнить значение, полученное из env() с регулярным выражением.
Например addDetector('iphone', array('env' => 'HTTP_USER_AGENT', 'pattern' => '/iPhone/i'));
Сравнение на основе параметров
Сравнение на основе параметров использует список параметров для создания регулярного выражения. Последующие вызовы добавления уже определённого детектора параметров объединят параметры.
Например addDetector('mobile', array('env' => 'HTTP_USER_AGENT', 'options' => array('Fennec')));
Детекторы обратного вызова
Детекторы обратного вызова позволяют указать тип «обратный вызов» для обработки проверки. Обратный вызов получит объект запроса в качестве единственного параметра.
Например addDetector('custom', array('callback' => array('SomeClass', 'somemethod')));
Детекторы параметров запроса
Позволяет создавать пользовательские детекторы параметров запроса.
Например addDetector('requested', array('param' => 'requested', 'value' => 1)
Вы также можете создать детекторы параметров, принимающие несколько значений, используя ключ options. Это полезно, когда вам нужно проверить, является ли параметр запроса частью списка параметров.
addDetector('extension', array('param' => 'ext', 'options' => array('pdf', 'csv'))
Параметры
- строка
$name - Имя детектора.
- массив
$options - Параметры определения детектора. См. выше.
addParams()source public
addParams( array $params )
Добавить параметры к набору параметров запроса. Это перезапишет все существующие параметры. Это изменяет параметры, доступные через $request->params.
Параметры
- массив
$params - Массив параметров для слияния
Возвращает
CakeRequestaddPaths()source public
addPaths( array $paths )
Добавить пути к переменным путей запроса. Это перезапишет любые существующие пути. Предлагает простой способ изменить, например, webroot и base.
Параметры
- массив
$paths - Массив путей для слияния
Возвращает
CakeRequestallowMethod()source public
allowMethod( string|array $methods )
Разрешить только определенные методы HTTP-запроса. Если метод запроса не совпадает, будет показана ошибка 405, и будет установлен необходимый заголовок ответа "Allow".
Пример:
$this->request->allowMethod('post', 'delete'); или $this->request->allowMethod(array('post', 'delete'));
Если запрос будет GET, заголовок ответа "Allow: POST, DELETE" будет установлен, и будет возвращена ошибка 405.
Параметры
- строка|массив
$methods - Разрешенные методы HTTP-запроса.
Возвращает
booleantrue
Исключения
MethodNotAllowedExceptionclientIp()source public
clientIp( boolean $safe true )
Получить IP-адрес, используемый клиентом, или то, что он сообщает об использовании.
Параметры
- boolean
$safeнеобязательно true Использовать безопасный режим = false, если вы считаете, что пользователь может манипулировать заголовком HTTP_CLIENT_IP. Установка $safe = false также проверит HTTP_X_FORWARDED_FOR.
Возвращает
строкаIP-адрес клиента.
contentType()source public
contentType( )
Получить тип содержимого, используемый в этом запросе.
Возвращает
строкаdata()source public
data( string $name )
Предоставляет чтение/запись доступа к $this->data. Позволяет использовать синтаксис, похожий на CakeSession для чтения данных POST.
Чтение значений.
$request->data('Post.title');
При чтении значений вы получите null для ключей/значений, которых нет.
Запись значений
$request->data('Post.title', 'New post!');
Вы можете записывать значения в любые ключи, даже те, которых нет, и массивы будут созданы для вас.
Параметры
- строка
$name - Имя значения с разделением точкой для чтения/записи, один или несколько аргументов.
Возвращает
смешанный|CakeRequestЗначение, которое читается, или $this, чтобы вы могли выполнить последовательные записи.
domain()source public
domain( integer $tldLength 1 )
Получить доменное имя и включить сегменты $tldLength tld.
Параметры
- целое число
$tldLengthнеобязательно 1 Количество сегментов, которые содержит ваш tld. Например:
example.comсодержит 1 tld. В то время какexample.co.ukсодержит 2.
Возвращает
строкаДоменное имя без поддоменов.
header()source public статический
header( string $name )
Прочитать HTTP-заголовок из информации запроса.
Параметры
- строка
$name - Имя заголовка, который вы хотите получить.
Возвращает
смешанныйfalse, если заголовок не установлен, или значение заголовка.
here()source public
here( boolean $base true )
Получить значение текущего URL-адреса запроса. Будет включать именованные параметры и аргументы строки запроса.
Параметры
- boolean
$baseнеобязательно true - Включить базовый путь, установить в false, чтобы обрезать базовый путь.
Возвращает
строкаТекущий URL-адрес запроса, включая аргументы строки запроса.
host()source public
host( boolean $trustProxy false )
Получить хост, на котором обрабатывался запрос.
Параметры
- boolean
$trustProxyнеобязательно false - Доверять ли хосту прокси.
Возвращает
строкаinput()source public
input( string $callback null )
Считывание данных из php://input. Полезно при взаимодействии с содержанием тела запроса XML или JSON.
Получение ввода с помощью функции декодирования:
$this->request->input('json_decode');
Получение ввода с помощью функции декодирования и дополнительных параметров:
$this->request->input('Xml::build', array('return' => 'DOMDocument'));
Все дополнительные параметры применяются к обратной функции в том порядке, в котором они заданы.
Параметры
- строка
$callbackнеобязательно null Функция обратного вызова декодирования, которая преобразует строковые данные в другое представление. Оставьте пустым, чтобы получить доступ к исходным данным ввода. Вы также можете передать дополнительные параметры для функции обратного вызова декодирования, используя аргументы var, см. выше.
Возвращает
Данныедекодированные/обработанные данных запроса.
is()source public
is( string|array $type )
Проверка типа запроса.
Использует встроенные правила определения, а также дополнительные правила, определенные с помощью CakeRequest::addDetector(). Любой детектор может быть вызван как is($type) или is$Type().
Параметры
- строка|массив
$type Тип запроса, который нужно проверить. Если массив, этот метод вернет true, если запрос соответствует любому типу.
Возвращает
booleanСоответствует ли запрос требуемому типу.
isAll()source public
isAll( array $types )
Проверка соответствия запроса всем заданным типам.
Позволяет проверять несколько типов и объединять результаты. См. CakeRequest::is(), чтобы узнать, как добавить дополнительные типы и встроенные типы.
Параметры
- массив
$types - Типы для проверки.
Возвращает
booleanУспех.
См. также
CakeRequest::is()method()source public
method( )
Получить метод HTTP, используемый для этого запроса. Есть несколько способов указать метод.
- Если ваш клиент поддерживает, вы можете использовать родные HTTP-методы.
- Вы можете установить заголовок HTTP-X-Method-Override.
- Вы можете отправить ввод с именем
_method
Любой из этих 3 подходов может быть использован для установки метода HTTP, используемого CakePHP внутренне, и повлияет на результат этого метода.
Возвращает
строкаИмя используемого метода HTTP.
offsetExists()source public
offsetExists( string $name )
Реализация isset() для доступа к массивам
Параметры
- строка
$name - Элемент для проверки.
Возвращает
booleanРеализация
ArrayAccess::offsetExists() offsetGet()source public
offsetGet( string $name )
Реализация чтения доступа к массивам
Параметры
- строка
$name - Имя ключа, к которому осуществляется доступ.
Возвращает
смешанныйРеализация
ArrayAccess::offsetGet() offsetSet()source public
offsetSet( string $name , mixed $value )
Реализация записи доступа к массиву
Параметры
- string
$name - Имя ключа, к которому происходит запись
- mixed
$value - Записываемое значение.
Реализация
ArrayAccess::offsetSet() offsetUnset()source public
offsetUnset( string $name )
Реализация метода unset() доступа к массиву
Параметры
- string
$name - Имя для удаления.
Реализация
ArrayAccess::offsetUnset() onlyAllow()source public
onlyAllow( string|array $methods )
Псевдоним CakeRequest::allowMethod() для обратной совместимости.
Устарело
3.0.0 С 2.5, используйте CakeRequest::allowMethod() вместо этого.Параметры
- string|array
$methods - Разрешенные методы HTTP-запроса.
Возвращает
booleantrue
Исключения
MethodNotAllowedExceptionСм. также
CakeRequest::allowMethod()param()source public
param( string $name )
Безопасный доступ к значениям в $this->params.
Параметры
- string
$name - Имя параметра для получения.
Возвращает
mixedЗначение указанного параметра. Возвращает false, если параметр не существует или имеет ложное значение.
parseAccept()source public
parseAccept( )
Парсинг заголовка HTTP_ACCEPT и возвращает отсортированный массив с типами контента в качестве ключей и значениями pref.
Обычно вы хотите использовать CakeRequest::accept() для получения простого списка принятых типов контента.
Возвращает
arrayМассив prefValue => массив(типов контента)
query()source public
query( string $name )
Предоставляет доступ для чтения для $this->query. Позволяет использовать синтаксис, аналогичный синтаксису CakeSession для чтения данных запроса URL.
Параметры
- string
$name - Имя переменной строки запроса
Возвращает
mixedСчитываемое значение
referer()source public
referer( boolean $local false )
Возвращает referer, который направил этот запрос.
Параметры
- boolean
$localнеобязательно false - Попытка вернуть локальный адрес. Локальные адреса не содержат имен хостов.
Возвращает
stringАдрес, направивший данный запрос.
setInput()source public
setInput( string $input )
Изменение данных, первоначально полученных из php://input. Полезно для изменения данных json/xml в middleware или DispatcherFilters перед передачей в RequestHandlerComponent
Параметры
- string
$input - Строка, заменяющая исходные данные, разобранные из input()
subdomains()source public
subdomains( integer $tldLength 1 )
Получение поддоменов для хоста.
Параметры
- integer
$tldLengthнеобязательно 1 Количество сегментов, которые содержит ваша зона. Например:
example.comсодержит 1 зону. В то время какexample.co.ukсодержит 2.
Возвращает
arrayМассив поддоменов.
Подробное описание свойств
$_detectorssource
protected array
Встроенные детекторы, используемые с is() могут быть изменены с помощью addDetector().
Существует несколько способов указать детектор, см. CakeRequest::addDetector() для различных форматов и способов определения детекторов.
array(
'get' => array('env' => 'REQUEST_METHOD', 'value' => 'GET'),
'patch' => array('env' => 'REQUEST_METHOD', 'value' => 'PATCH'),
'post' => array('env' => 'REQUEST_METHOD', 'value' => 'POST'),
'put' => array('env' => 'REQUEST_METHOD', 'value' => 'PUT'),
'delete' => array('env' => 'REQUEST_METHOD', 'value' => 'DELETE'),
'head' => array('env' => 'REQUEST_METHOD', 'value' => 'HEAD'),
'options' => array('env' => 'REQUEST_METHOD', 'value' => 'OPTIONS'),
'ssl' => array('env' => 'HTTPS', 'value' => 1),
'ajax' => array('env' => 'HTTP_X_REQUESTED_WITH', 'value' => 'XMLHttpRequest'),
'flash' => array('env' => 'HTTP_USER_AGENT', 'pattern' => '/^(Shockwave|Adobe) Flash/'),
'mobile' => array('env' => 'HTTP_USER_AGENT', 'options' => array(
'Android', 'AvantGo', 'BB10', 'BlackBerry', 'DoCoMo', 'Fennec', 'iPod', 'iPhone', 'iPad',
'J2ME', 'MIDP', 'NetFront', 'Nokia', 'Opera Mini', 'Opera Mobi', 'PalmOS', 'PalmSource',
'portalmmm', 'Plucker', 'ReqwirelessWeb', 'SonyEricsson', 'Symbian', 'UP\\.Browser',
'webOS', 'Windows CE', 'Windows Phone OS', 'Xiino'
)),
'requested' => array('param' => 'requested', 'value' => 1),
'json' => array('accept' => array('application/json'), 'param' => 'ext', 'value' => 'json'),
'xml' => array('accept' => array('application/xml', 'text/xml'), 'param' => 'ext', 'value' => 'xml'),
) $_inputsource
protected string
Копия php://input. Поскольку этот поток может быть прочитан только один раз в большинстве SAPI, сохраняем копию, чтобы пользователям не приходилось знать об этом нюансе.
''
$datasource
public array
Массив данных POST. Будет содержать данные формы, а также загруженные файлы. Входные данные, начинающиеся с префикса 'data', будут иметь префикс удален. Если есть перекрытие между входными данными с префиксом data и без него, значение с префиксом 'data' будет иметь приоритет.
array()
$paramssource
public array
Массив параметров, разобранных из URL.
array(
'plugin' => null,
'controller' => null,
'action' => null,
'named' => array(),
'pass' => array(),
)
© 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/2.8/class-CakeRequest.html