Skip to content
AntonShevchuk edited this page Apr 27, 2013 · 21 revisions

Описание

Обертка для работы с глобальными переменными $_GET, $_POST, $_COOKIE, $_SERVER, $_FILES, $_ENV. Большинство функционала честно взято из Zend_Controller_Request_Http.

Настройки

Нет

Использование

Методы общие как для CLI интерфейса так и для HTTP запросов:

<?php
// get request from application
$Request = $this->getRequest();

// module/controller
$Request->getModule();
$Request->getController();

// params
$Request->setParam($key, $value);
$Request->getParam($key, $default);
$Request->setParams($array);

Проверка методов

Для контроллера можно добавить описание методов на какие он откликается:

<?php
return
/**
 * @methods POST,PUT,CLI
 */
function() { /*...*/ }

Таким образом можно отсечь нежелательное вмешательство в поведение системы.

HTTPRequest

<?php
 
// return http|https
$Request->getScheme();
// get request method GET/POST/PUT/DELETE
$Request->getMethod();
// get $_GET data
$Request->getQuery($key, $default);
// get $_POST data
$Request->getPost($key, $default);
 
$Request->getCookie($key, $default);
$Request->getServer($key, $default);
$Request->getEnv($key, $default);
 
$Request->getHeader($header);
$Request->getHttpHost();
 
$Request->setBaseUrl($baseUrl);
$Request->getBaseUrl();

$Request->getClientIp($checkProxy = true);
 
// return bool
$Request->isXmlHttpRequest();
// return bool
$Request->isFlashRequest();

HttpFileUpload

<?php
$fileUpload = $this->getRequest()->getFileUpload();
$file = $fileUpload -> getFile('avatar'); // return HttpFile

/* protected
$file->name; // myFace
$file->ext;  // jpg
$file->type; // images/jpeg // finfo::file($this->tmp_name, FILEINFO_MIME_TYPE);
$file->size; // 23 000
*/

$file->getSize();     // = 23 000
$file->getSize('kb'); // = 23 000 / 1024
$file->getSize('mb'); // = 23 000 / (1024 * 1024)

if (!$file->hasError() && $file -> isImage()) {
    $file -> setName("avatar");
    $file -> moveTo('/path/to/save'); // save as /path/to/save/avatar.jpg
}

$files = $fileUpload -> getFiles('photos'); // return array
foreach ($files as $file) {
    // logic similar to prevous example
}

CliRequest

Clone this wiki locally