Класс CakeRequest
Класс, который помогает обернуть информацию о запросе и особенности одного запроса. Предоставляет методы, обычно используемые для интроспекции заголовков запроса и тела запроса.
Имеет интерфейсы массива и объекта. Вы можете получить доступ к параметрам фреймворка, используя индексы:
$request['controller'] или $request->controller.
- CakeRequest реализует ArrayAccess
Авторские права: Copyright (c) Cake Software Foundation, Inc. (https://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 позволяет проверять параметры маршрутизации на наличие/отсутствие.
- _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()
Параметры
- строка
$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 позволяет выполнять проверки 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 Используйте 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 статический
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
Любой из этих 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 )
Реализация записи доступа к массиву
Параметры
- строка
$name - Имя ключа, к которому записывается значение
- смешанный
$value - Записываемое значение.
Реализация
ArrayAccess::offsetSet() offsetUnset()source public
offsetUnset( string $name )
Реализация метода unset() для доступа к массиву
Параметры
- строка
$name - Имя для удаления.
Реализация
ArrayAccess::offsetUnset() onlyAllow()source public
onlyAllow( string|array $methods )
Псевдоним для CakeRequest::allowMethod() для обратной совместимости.
Устарело
3.0.0 С версии 2.5 используйте CakeRequest::allowMethod() вместо этого.Параметры
- строка или массив
$methods - Разрешенные методы HTTP-запроса.
Возвращает
booleantrue
Исключения
MethodNotAllowedExceptionСм. также
CakeRequest::allowMethod()param()source public
param( string $name )
Безопасный доступ к значениям в $this->params.
Параметры
- строка
$name - Имя параметра для получения.
Возвращает
смешанныйЗначение указанного параметра. Вернет false, если параметр не существует или имеет нулевое значение.
parseAccept()source public
parseAccept( )
Парсит заголовок HTTP_ACCEPT и возвращает отсортированный массив со значениями типов содержимого в качестве ключей и значениями pref.
В целом, для получения простого списка поддерживаемых типов содержимого следует использовать CakeRequest::accept().
Возвращает
массивМассив prefValue => array(типов содержимого)
query()source public
query( string $name )
Предоставляет доступ к чтению $this->query. Позволяет использовать синтаксис, подобный CakeSession для чтения данных запроса URL.
Параметры
- строка
$name - Имя переменной строки запроса
Возвращает
смешанныйСчитываемое значение
referer()source public
referer( boolean $local false )
Возвращает referer, который обратился к этому запросу.
Параметры
- boolean
$localнеобязательный false - Попытка вернуть локальный адрес. Локальные адреса не содержат хост-имена.
Возвращает
строкаАдрес, отправивший этот запрос.
setInput()source public
setInput( string $input )
Изменяет данные, изначально полученные из php://input. Полезно для изменения данных json/xml в middleware или DispatcherFilters до того, как они попадут в RequestHandlerComponent.
Параметры
- строка
$input - Строка, заменяющая исходные обработанные данные из input()
subdomains()source public
subdomains( integer $tldLength 1 )
Получение поддоменов для хоста.
Параметры
- целое число
$tldLengthнеобязательный 1 Количество сегментов в вашем домене верхнего уровня. Например:
example.comсодержит 1 домен верхнего уровня. В то время какexample.co.ukсодержит 2.
Возвращает
массивМассив поддоменов.
Подробное описание свойств
$_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 и без него, значение с префиксом 'data' будет иметь приоритет.
array()
$paramssource
public массив
Массив параметров, полученный из URL.
array(
'plugin' => null,
'controller' => null,
'action' => null,
'named' => array(),
'pass' => array(),
)
© 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/2.10/class-CakeRequest.html