생성자 속성 승격은 PHP 8.0부터 도입되었습니다. 클래스의 속성을 선언하고 생성자에서 그 값을 초기화 하는 반복적인 코드를 한줄로 줄여주는 기능입니다.
기존에는 클래스 상단에 속성을 선언, 생성자 매개변수를 받아 생성자 본문에서 $this -> $매개변수; 와 같이 일일이 할당 해야했습니다.
기존
classPoint
{
publicfloat$x;
publicfloat$y;
publicfloat$z;
publicfunction__construct(
float$x,
float$y,
float$z
) {
$this->x=$x;
$this->y=$y;
$this->z=$z;
}
}
위 코드를 보면, $x, $y, $z라는 이름이 각각 3번씩 반복해서 나타납니다. 속성 선언 (public float $x;) 생성자 매개변수 (float $x) 값 할당 ($this->x = $x;) 이는 코드를 길고 지루하게 만들며, 속성을 하나 추가하거나 제거할 때 여러 곳을 수정해야 하는 번거로움이 있었습니다.
이번에는 생성자 속성 승격을 사용하보겠습니다.
classPoint
{
publicfunction__construct(
publicfloat$x,
publicfloat$y,
publicfloat$z
) {
// 생성자 본문이 비어있어도 됩니다!
}
}
// 사용법은 완전히 동일합니다.
$point=newPoint(1.0,2.0,3.0);
echo$point->x;// 1.0
생성자 매개변수 앞에 public, proteted, private같은 가시성 제어자를 붙여 사용합니다. PHP는 이를 보고 다음 세가지 작업을 자동으로 수행.
1. 동일한 이름의 클래스 속성을 선언
2. 생성자 매개변수로 값을 받는다.
3. 받은 값을 해당 속성에 자동으로 할당.
주요 규칙 및 문법 가시성 제어자 필수: public, protected, private 중 하나가 반드시 매개변수 앞에 있어야 승격이 일어납니다. 생성자에서만 사용 가능: 이 구문은 오직 클래스 생성자(__construct)에서만 사용할 수 있습니다. var 사용 불가: 오래된 var 키워드는 사용할 수 없습니다. 중복 선언 불가: 승격된 속성과 동일한 이름의 클래스 속성을 별도로 선언할 수 없습니다.