2014-10-21 4 views
0

나는 다음과 같은 코드를 사용하여 피곤 :isset()을 사용하지 않고 신속하게 판단하고 할당하는 방법은 무엇입니까?

$blog = isset($_GET['blog']) ? $_GET['blog'] : 'default'; 

하지만 난 사용할 수 없습니다

$blog = $_GET['blog'] || 'default'; 

isset()를 사용하지 않고이 작업을 수행 할 수있는 방법이 있습니까?

+0

Psst - 당신이 내게서 그걸 듣지 못했지만, 당신이'null'을 할당하려고하고 최선의 관행을 깨뜨리지 않는다면, 그 통지를 억제하고'$ blog = @ $ _GET [ 'blog'];'_ [그림자로 되돌아 간다 ...] _ –

+0

^^^ 실제로 나는 이것을하지 않을 것입니다. –

답변

4

당신은 coalesce operator

// Uses $_GET['user'] if it exists -- or 'nobody' if it doesn't 
$username = $_GET['user'] ?? 'nobody'; 

// Loads some data from the model and falls back on a default value 
$model = Model::get($id) ?? $default_model; 
+0

Man, 곧 출시 될 Null Coalesce 연산자는 PHP가 수년간 얻은 가장 흥미로운 기능입니다. –

+0

정말 멋진 기능입니다. – Ghost

+0

이 코드를 더 짧게 만들 수 있습니다.'$ u = $ _ GET [ 'u'] ?? '엔'; $ m = 모델 :: get ($ id) ?? $ 01_m;'lol –

1

는 도우미 함수를 작성 얻기 위해 PHP의 다음 버전을 기다려야한다.

function arrayValue($array, $key, $default = null) 
{ 
    return isset($array[$key]) ? $array[$key] : $default; 
} 

사용법 :

$blog = arrayValue($_GET, 'blog'); 
0

이 아니보다 더 짧은 방법이 없습니다. $ _POST 및 $ _GET 변수를 처리하는 클래스를 만들 수 있으며 블로그를 호출 할 때마다 해당 변수를 사용자 만 사용할 수 있습니다.

예 :

$ blog = Input :: put ("blog");

입력 클래스에는 입력이 $ _POST 및 $ _GET 또는 Null 값을 가질 때 결정하는 정적 메서드가 있습니다.

0

당신은 단지 사용자 지정 도우미 쓸 수 있습니다 : 또는

function get($name, $default=null){ 
    return isset($_GET[$name]) ? $_GET[$name] : $default; 
} 

$blog = get('blog', 'default'); 

을, 당신은 filter extension이, 예를 들면 :

$blog = filter_input(INPUT_GET, 'blog') ?: 'default'; 

그것은하지 띄게 짧아입니다하지만 더 검증 및 sanitisation 수 있습니다 (그리고 그것은 또한 사소한 사용자 정의 함수에서 랩핑).