>백엔드 개발 >PHP 튜토리얼 >PHP의 Nullsafe 연산자(?-)는 어떻게 Null 포인터 예외를 방지할 수 있습니까?

PHP의 Nullsafe 연산자(?-)는 어떻게 Null 포인터 예외를 방지할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-19 07:07:26666검색

How Can PHP's Nullsafe Operator (?-) Prevent Null Pointer Exceptions?

PHP의 Nullsafe 연산자: 조건부 개체 탐색 달성

PHP에서 다음과 같은 경우 개체 속성에 액세스하고 메서드를 호출하면 잠재적으로 null 포인터 예외가 발생할 수 있습니다. 개체가 null이거나 요청한 멤버가 없습니다. 이 문제를 해결하기 위해 PHP 8에 도입된 nullsafe 연산자(?-)를 사용하면 객체 속성과 메서드를 안전하게 탐색할 수 있습니다.

다음 명령문을 고려하세요.

echo $data->getMyObject() != null ? $data->getMyObject()->getName() : '';

이 명령문은 $data 객체에는 getMyObject() 속성이 있고 null이 아닌 경우. 속성이 존재하고 null이 아닌 경우 해당 객체 내의 getName() 속성에 액세스합니다. 그러나 속성이 존재하지 않거나 null인 경우 명령문은 더 이상 진행되지 않습니다.

nullsafe 연산자를 사용하여 명령문을 다음과 같이 다시 작성할 수 있습니다.

echo $data->getMyObject()?->getName();

이 명령문에서 , $data가 null이거나 getMyObject() 속성이 없으면 연산자 체인이 종료되고 null이 반환됩니다. 이를 통해 누락된 속성이나 메서드 호출을 예외 없이 정상적으로 처리할 수 있습니다.

nullsafe 연산자는 개체 속성 및 메서드에 액세스하는 다음 연산자와 함께 작동합니다.

  • 배열 액세스([]) : $data?->[0]
  • 속성 액세스(->): $data?->name
  • Nullsafe 속성 액세스(?->): $data?->name
  • 정적 속성 액세스(::): 상위::name
  • 메서드 호출(->): $data->getName()
  • Nullsafe 메서드 호출 (?->): $data?->getName()
  • 정적 메서드 호출(::): Parent::getName()

예를 들어 다음 코드는 아래:

$string = $data?->getObject()->getName() . " after";

는 다음과 동일합니다:

$string = (isset($data) && $data !== null) ? $data->getObject()->getName() . " after" : null;

$data가 null.

nullsafe 연산자를 활용하면 null 포인터 예외가 발생하지 않도록 하면서 더욱 깔끔하고 간결한 코드를 작성할 수 있습니다.

위 내용은 PHP의 Nullsafe 연산자(?-)는 어떻게 Null 포인터 예외를 방지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.