Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP 8 Nullsafe 연산자(?->): null 체크를 대체하는 간결한 방법

PHP 8부터 도입된 nullsafe 연산자(?->)는 기존의 복잡한 null 검사 조건문을 대체할 수 있는 강력한 기능입니다. 이 연산자를 활용하면 메서드나 속성 호출을 체인 형태로 연결하되, 중간에 하나라도 실패하는 요소가 있으면 전체 실행이 즉시 중단되고 결과는 null로 평가됩니다.

nullsafe 연산자의 동작 방식은 다음과 같습니다. 좌변(left-hand side)의 값이 null로 평가되면 전체 실행 체인이 그 시점에 멈추고 표현식 전체가 null을 반환합니다. 반대로 null이 아니라면 일반적인 연산자(->)처럼 정상적으로 동작합니다.

또한 nullsafe 연산자는 여러 번 연결(chaining)하여 사용할 수 있으며, 처음으로 null을 만나는 nullsafe 연산자 지점에서 표현식이 단락 평가(short-circuit)됩니다.

$employee->getDepartment()?->getAddress()->format();

nullsafe 연산자의 문법

nullsafe 문법은 일반적인 메서드/속성 접근 연산자(->)와 유사하지만, 물음표(?)를 함께 붙인 ?->를 사용한다는 점이 다릅니다.

$foo?->bar?->baz;

PHP 8 Nullsafe 연산자 예제

아래 예제는 nullsafe 연산자를 실제로 어떻게 활용하는지 보여줍니다.

<?php
   class Emp{
      public function getAddress() {}
   }
   $emp = new Emp();
   $dept = $emp?->getAddress()?->dept?->iso_code;
   print_r($dept);
?>

실행 결과

null

위 코드에서 $emp?->getAddress()의 반환값이 존재하지 않으므로, 이후의 체인 호출은 실행되지 않고 최종적으로 null이 출력됩니다. 만약 nullsafe 연산자 없이 작성했다면 dept 속성에 접근하는 과정에서 에러가 발생했을 것입니다.

이처럼 nullsafe 연산자를 사용하면 객체가 null일 가능성이 있는 상황에서도 안전하고 간결하게 프로퍼티와 메서드에 접근할 수 있어 코드 가독성과 안정성이 크게 향상됩니다.