HTTP

Request

Form을 작성하거나, File을 업로드 하는 등의 사용자 요청과 관련된 제어를 수행합니다. 일반적으로 $_GET, $_POST, $_FILES, $_SERVER, $_REQUEST의 내용에 접근할 수 있으며, 아래 명시된 편의 메서드를 제공한다.

Request::get()->get('someKey'); // $_GET['someKey']
Request::post()->get('someKey'); // $_POST['someKey']
Request::server()->get('REQUEST_URI'); // $_SERVER['REQUEST_URI']
Request::files()->get('someKey'); // $_FILES['someKey']
Request::request()->get('someKey'); // $_REQUEST['someKey']

단, $_ENV 는 지원하지 않습니다. 다차원 키의 접근 방법으로 dot notation 을 지원합니다.

값 설정하기

Request::get()->set('name', 'value');
Request::post()->set('name', 'value');
Request::files()->set('file.name', 'value');
Request::request()->set('sampel.name', 'value');
Request::server()->set('REQUEST_URI', 'value');

값 가져오기

$name = Request::get()->get('name');
$name = Request::post()->get('name.first');
$name = Request::files()->get('name.first');
$name = Request::request()->get('name.first');
$name = Request::server()->get('REQUEST_URI');

요청값이 없는 경우 다음과 같이 2번째 인자로, 기본값을 설정할 수 있습니다.

$name = Request::get()->get('name', '기본값');
$name = Request::post()->get('name.first', '기본값');

모든 값 가져오기

해당 get()이 가지고 있는 모든 변수를 배열로 반환합니다.

$allGet = Request::get()->all();
$allGet = Request::get()->toArray();

값 지우기

Request::get()->del('name');
Request::get()->del('name.first');

모든 값 지우기

Request::get()->clear();

값의 존재유무 체크하기

if (Request::get()->has('name')) {
    // some code...
}

if (Request::get()->has('name.first')) {
    // some code...
}

주요 Method

getServerAddress()

서버의 IP주소를 반환하며, cli에서도 정상적으로 가져올 수 있도록 처리되었습니다.

getRemoteAddress()

클라이언트의 ip주소를 반환하며, Proxy 혹은 nginx와 같은 구조에서 정상적으로 반환할 수 있도록 처리되었습니다.

isCli()

cli접근 여부를 체크하여 boolean을 반환합니다.

if (Request::isCli()) {
    // background process
}
isAjax()

Requestajax인지 체크 후 boolean 값을 반환합니다.

if (Request::isAjax()) {
    // ajax code
}
isMethod($method)

주어진 $method 인자와 현재 REQUEST_METHOD 비교 후 boolean 값을 반환하며, 파라미터가 get, post, head, options, put, delete, trace, connect이 아닌 경우 예외 처리됩니다.

if (Request::isMethod('get')) {
    // get인 경우만 실행
}

if (Request::isMethod('post')) {
    // get인 경우만 실행
}
isMobile()

도메인m이 있는지 여부를 통해 모바일 여부를 boolean 형태로 반환합니다.

if (Request::isMobile()) {
    // 도메인이 m.domain.com 인 경우
}
isMobileDevice()

접속한 기기가 모바일 or 태블릿인지 UserAgent를 통해 체크 후 boolean을 반환합니다.

if (Request::isMobileDevice()) {
    // 접속기기가 모바일/태블릿인 경우
}
isRefresh()

브라우저에서 새로고침을 했는지에 대해 체크 후 boolean을 반환합니다.

if (Request::isRefresh()) {
    // 페이지 새로고침을 한 경우
}

Response

Json, Redirect, Streamed, BinaryFile 의 4가지 형태로 응답 객체를 생성할 수 있습니다. Chaining method를 제공합니다.

Create Instance

$response = Response::create($content, $statusCode, $headers);

Session

파일 세션만 지원한다.

다차원 키의 접근 방법으로 dot notation 을 지원한다.

Setting a value

Session::set('name', 'value');
Session::set('name.first', 'value');

Getting a value

$name = Session::get('name');
$name = Session::get('name.first');

2번째 인자로, 기본값을 설정할 수 없다. 미설정시 null 로 설정된다.

Getting all values

$session = Session::all();

Removing a value

Session::del('name');
Session::del('name.first');

Removing all values

Session::clear();

Determining if an given key exists

if (Session::has('name')) {
    // some code...
}

if (Session::has('name.first')) {
    // some code...
}

쿠키는 다차원 키를 사용할 수 없다.

Setting a value

Cookie::set('name', 'value');   // 세션 쿠키 생성
Cookie::set('name', 'value', 3600, '/', true, true);    // 1시간 만료 쿠키 생성

Getting a value

$name = Cookie::get('name');

Getting all values

$session = Cookie::all();

Removing a value

Cookie::del('name');

Determining if an given key exists

if (Cookie::has('name')) {
    // some code...
}