PHP 8에서는 생성자 속성 승격이 추가되었습니다. 단순한 객체를 구성하는 동안 많은 상용구 코드를 줄이는 데 도움이 됩니다. 이 기능을 사용하면 클래스 필드, 생성자 정의 및 변수 할당을 모두 하나의 구문으로 결합하여 생성자 매개변수 목록으로 만들 수 있습니다.
클래스 속성과 생성자를 지정하는 대신 생성자 속성 승격을 사용하여 모두 결합할 수 있다고 말할 수 있습니다.
예시 1:PHP 7 코드
<?php class Account { public float $a; public float $b; public float $c; public function __construct( float $a = 0.0, float $b = 0.0, float $c = 0.0, ) { $this->a = $x; $this->b = $y; $this->c = $z; } } ?>
예시 2:PHP 8 코드
PHP 8에서 위의 PHP 7 코드를 다음과 같이 다시 작성할 수 있습니다. -
<?php class Account { public function __construct( public float $a = 0.0, public float $b = 0.0, public float $c = 0.0, ) {} } $Account =new Account (10.90,20.0,30.80); print_r($Account->a); print_r($Account->a); print_r($Account->a); ?>
출력
10.9 20 30.8
위의 코드에서는 생성자 서명에서 속성 정의와 채우기 인라인을 결합했습니다. 이 코드는 반복을 제거합니다.
예시 3:생성자 속성 프로모션을 위한 PHP 8 코드
<?php class Employee { public function __construct( public int $id, public string $name, ) {} } $employee = new Employee(11, 'Alex'); print_r($employee->id); print_r($employee->name); ?>
출력
11 Alex