PHP7 에서 새롭게 나온 연산자에 대한 글을 가져와습니다.
출처: https://mytory.net/2017/11/13/php-7.0-null-coalescing-operator.html
경우에 따라 3항 연산자보다 편하게 사용할 수 있는 ?? 연산자를 소개한다.
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 병합 연산자다. 앞의 변수가 설정돼 있지 않으면 뒤의 것을 사용한다. ($_GET['user']가 null이면 ''를 $user변수에 추가해주는 것입니다.)
공식 설명은 Migrating from PHP 5.6.x to PHP 7.0.x의 Null coalescing operator 항목을 참고하자.
ex)
$person->name ?? 'Guest';
해당 객체의 호출값이 null이면, Guest를 넘겨줍니다.
'WEB언어 > PHP' 카테고리의 다른 글
[PHP] 하나 은행 환율 API를 통한 JSON (14) | 2018.12.06 |
---|---|
PHP7에서 mysql_connect 를 mysqli_connect 로 사용 (0) | 2018.12.05 |
PHP 현재 자신의 파일명 가져오기 basename($_SERVER['PHP_SELF']); (0) | 2018.05.15 |
php 이미지 자르기(crop) 만들기 (0) | 2018.05.09 |
[PHP] goto_url 로 페이지 이동하기 (0) | 2018.03.27 |
phpDocumentor 소스코드 문서 생성기(?) (0) | 2018.03.10 |
PHP의 empty (0) | 2018.03.09 |
PHP의 Composer 한글 메뉴얼 + PHP개발자 글 (0) | 2018.01.05 |
(로그인하지 않으셔도 가능)