PHP 8의 Null 안전 연산자는 무엇이며 왜 PHP의 다음 대작입니까?
4970 단어 programmingphp
그러나 새로운 버전이 나올 때마다 PHP는 개발자의 인식을 바꾸고 있습니다.
PHP 7과 PHP 8의 최근 개선 사항은 Java, C++, Dart 등과 같은 언어에서만 볼 수 있는 많은 기능을 가져왔습니다.
PHP 8에서 가져온 기능/개선 사항 중 하나는 보다 쉬운 Null 안전입니다.
Null 안전은 Null 값으로 인한 프로그램 충돌이 널리 사용되기 때문에 프로그래밍에서 많은 의미를 갖습니다.
Null 안전 연산자란:
Null 안전 연산자는 PHP 8.0의 새로운 구문으로, PHP에 선택적 연결 기능을 제공합니다.
null-safe 연산자는 값이 null인 경우 오류를 발생시키지 않고 null-safe 연산자가 검색을 단락시키는 속성 및 메서드 반환 값 체인의 값을 읽을 수 있도록 합니다.
구문은 속성/메서드 액세스 연산자(->)와 유사하며 null 허용 유형 패턴을 따르는 null-safe 연산자는 ?->입니다.
$foo?->bar?->baz;
Null 안전 연산자는 왼쪽의 식이 null로 평가되는 경우 자동으로 null을 반환합니다.
class Customer {
public function getAddress(): ?Address {}
}
class Address {
public function getCountry(): string {}
}
$country = $customer->getAddress()->getCountry();
위 스니펫에서 Customer::getAddress() 메서드 반환 값은 null을 허용합니다. null 값 또는 Address 클래스의 개체를 반환할 수 있습니다.
$customer->getAddress()->getCountry() 체인은 getAddress의 반환 값이 null일 수 있고 PHP가 getCountry() 메서드를 호출하려고 할 때 오류를 발생시키기 때문에 "null safe"하지 않습니다.
Fatal error: Uncaught Error: Call to a member function getCountry() on null in ...:...
주소에 안전하게 접근하기 위해서는 반환 값에 더 접근하기 전에 null 반환 값을 확인하는 것이 필요했습니다.
$address = $customer->getAddress();
$country = $address ? $address->getCountry() : null;
$address = $customer->getAddress();
if ($address) {
$country = $address->getCountry();
}
else {
$country = null;
}
null-safe 연산자는 속성/메서드 액세스를 단락시키고 연산자의 왼쪽이 null인 경우 나머지 식을 실행하지 않고 즉시 null을 반환하여 이 문제를 해결합니다.
참조:
PHP 8 new Features .
Reference
이 문제에 관하여(PHP 8의 Null 안전 연산자는 무엇이며 왜 PHP의 다음 대작입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bawa_geek/what-is-null-safety-operator-in-php-8-and-why-is-it-next-big-thing-in-php-377b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)