Класс CakeRequest
Класс, помогающий обернуть информацию о запросе и особенности отдельного запроса. Предоставляет методы, обычно используемые для интроспекции заголовков запроса и тела запроса.
Имеет интерфейс массива и объекта. Вы можете получить доступ к параметрам фреймворка, используя индексы:
$request['controller'] или $request->controller.
- CakeRequest реализует ArrayAccess
Авторские права: Авторские права (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Магический метод получения позволяет получить доступ к разобранным параметрам маршрутизации непосредственно к объекту.
- __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 сегментов домена верхнего уровня.
- Чтение 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
Параметры
- строка
$name - Вызванный метод
- массив
$params - Массив параметров для вызова метода
Возвращаемое значение
mixedИсключения
CakeExceptionпри вызове неверного метода.
__construct()source public
__construct( string $url null , boolean $parseEnvironment true )
Конструктор
Параметры
- строка
$urlнеобязательно null - Обрезанная строка URL для использования. Не должна содержать базовый путь приложения.
- логическое значение
$parseEnvironmentнеобязательно true - Установить в false, чтобы не анализировать автоматически среду. т.е. GET, POST и FILES.
__get()source public
__get( string $name )
Магический метод получения позволяет получить доступ к разобранным параметрам маршрутизации непосредственно к объекту.
Позволяет получить доступ к $this->params['controller'] через $this->controller.
Параметры
- строка
$name - Доступное свойство.
Возвращаемое значение
mixedЛибо значение параметра, либо null.
__isset()source public
__isset( string $name )
Магический метод isset позволяет проверять параметры маршрутизации на наличие/пустоту.
Параметры
- строка
$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-адрес, используемый клиентом, или IP, который он, по утверждению, использует.
Параметры
- boolean
$safeнеобязательно true Использовать safe = 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 static
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 Обратная функция декодирования, которая преобразует строковые данные в другое представление. Оставьте пустым, чтобы получить исходные входные данные. Вы также можете передать дополнительные параметры для обратной функции декодирования с помощью дополнительных аргументов, см. выше.
Возвращает
Данныедекодированные/обработанные данные запроса.
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
Любой из этих трех подходов может использоваться для установки метода 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 )
Реализация удаления доступа к массиву
Параметры
- 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 )
Возвращает ссылку, которая направила этот запрос.
Параметры
- 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 массив
Встроенные детекторы, используемые с 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 строка
Копия php://input. Поскольку этот поток может быть прочитан только один раз в большинстве SAPI, сохраняйте его копию, чтобы пользователям не нужно было знать об этой детали.
''
$datasource
public массив
Массив данных POST. Будет содержать данные формы, а также загруженные файлы. Входные данные с префиксом 'data' будут иметь удаленный префикс данных. Если существует перекрытие между вводом с префиксом данных и без него, значение с префиксом 'data' будет иметь приоритет.
array()
$paramssource
public массив
Массив параметров, проанализированных из 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.
https://api.cakephp.org/2.9/class-CakeRequest.html