새로운 명명된 매개변수 함수
명명된 매개변수란 무엇인가요?주석 기능함수를 호출할 때 매개변수 이름을 명시할 수 있습니다. 이름, 매개변수 원래 함수 매개변수를 설치하지 않고도 순서대로 전달할 수 있습니다.예:
<?php /** * 计算余额方法 * @param $amount 账户金额 * @param $payment 支出金额 * @return $balance = $amount-$payment 余额 */ function balance($amount, $payment) { return $amount - $payment; } //传统方式调用 balance(100, 20); //php8 使用命名参数调用 balance(amount: 100, payment: 20); //也可以换个顺序,这样来 balance(payment: 20, amount: 100);
주석이란 무엇인가요? 코드로 직접 이동하여 마지막으로생성자 속성 승격예:#[Attribute]class PrintSomeThing{ public function __construct($str = '') { echo sprintf("打印字符串 %s \n", $str); }}#[PrintSomeThing("hello world")]class AnotherThing{}// 使用反射读取住解$reflectionClass = new ReflectionClass(AnotherThing::class);$attributes = $reflectionClass->getAttributes();foreach($attributes as $attribute) { $attribute->newInstance(); //获取注解实例的时候,会输出 ‘打印字符串 Hello world’}주석 기능에 대한 개인적인 이해 요약 주석을 사용하면 클래스를 낮은 디커플링과 높은 응집력을 가진 메타데이터 클래스로 정의할 수 있습니다. 사용 시 Annotation을 통해 유연하게 도입할 수 있으며, Annotation된 클래스 인스턴스를 반영하면 호출 목적을 달성할 수 있습니다.
**주석이 달린 클래스는 인스턴스화될 때만 호출됩니다
클래스 속성의 수정자 범위를 생성자에서 선언할 수 있다는 것이 무슨 뜻인가요? :Union type<?php // php8之前 class User { protected string $name; protected int $age; public function __construct(string $name, int $age) { $this->name = $name; $this->age = $age; } } //php8写法, class User { public function __construct( protected string $name, protected int $age ) {} }코드 양을 절약하므로 클래스 속성을 별도로 선언할 필요가 없습니다.
은 매개변수 유형이 불확실한 시나리오에서 사용할 수 있습니다.
일치 표현식예:
function printSomeThing(string|int $value) { var_dump($value); }
은 스위치 캐시와 유사하지만 엄격 = = = Match
새로운 Nullsafe 연산자예:
<?php$key = 'b';$str = match($key) { 'a' => 'this a', 'c' => 'this c', 0 => 'this 0', 'b' => 'last b',};echo $str;//输出 last b
<?php class User { public function __construct(private string $name) { //啥也不干 } public function getName() { return $this->name; } } //不实例 User 类,设置为null $user = null; echo $user->getName();//php8之前调用,报错 echo $user?->getName();//php8调用,不报错,返回空
"단순화된 is_null 판단
권장 학습: "PHP 비디오 튜토리얼
위 내용은 예제를 통해 PHP8의 새로운 기능 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!