php7의 여러 기능중 정말 쏠쏠하게 써 먹는 기능이 ??
연산자(operator)다. 아래처럼 활용한다.
$user = $_GET['user'] ?? '';
$name = $name ?? '';
$is_print = $config['is_print'] ?? false;
좀더 자세히
전에는 $_GET['user']
같은 것을 받을 때 이게 세팅돼 있는지 검사부터 해야 했다. 아래처럼 말이다.
$user = '';
if (!empty($_GET['user']) {
$user = $_GET['user'];
}
$_GET['user']
가 설정돼 있지 않은데 if ($_GET['user']) {
식으로 검사하면 변수가 설정돼 있지 않다는 메시지가 뜬다(PHP Notice: Undefined index: user in php shell code on line 3).
3항 연산자(Ternary Operator)로 축약해 사용하는 경우가 많은데, 역시 검사를 해야 했다. 아래처럼 쓰면 노티스가 뜬다.
$user = $_GET['user'] ?: '';
그래서 불편하게 아래처럼 써야 했다.
$user = (!empty($_GET['user'])) ? $_GET['user'] : '';
하지만 PHP 7.0부터는 아래처럼 쓰면 된다.
$user = $_GET['user'] ?? '';
노티스가 뜨지 않는다. ??
가 null 병합 연산자다. 앞의 변수가 설정돼 있지 않으면 뒤의 것을 사용한다.
공식 설명은 Migrating from PHP 5.6.x to PHP 7.0.x의 Null coalescing operator 항목을 참고하자.
댓글 남기기