PHP: Constructor Property Promotion เป็นฟีเจอร์ที่ถูกเพิ่มเข้ามาตั้งแต่ PHP 8.0 ซึ่งช่วยให้เราสามารถประกาศและกำหนดค่าให้กับ Property (ตัวแปรของคลาส) ได้โดยตรงภายใน Constructor เลย พูดง่าย ๆ คือมันช่วยลดโค้ดที่ซ้ำซ้อน (Boilerplate code) ลงไปได้เยอะมากครับ
เพื่อให้เห็นภาพชัดเจน ลองมาดูการเปรียบเทียบระหว่างแบบเดิม กับแบบใหม่กันครับ
เปรียบเทียบแบบเก่า vs แบบใหม่
สมมติว่าเราต้องการสร้างคลาส User ที่มี property 3 ตัวคือ id, name และ email
แบบเดิม (ก่อน PHP 8.0)
เราต้องประกาศ Property ด้านบน ทำ Type hinting จากนั้นก็ต้องมาเขียนสั่ง $this->... = $... ซ้ำๆ อีกรอบใน constructor
PHP
PHP
class User {
public int $id;
public string $name;
public string $email;
public function __construct(int $id, string $name, string $email) {
$this->id = $id;
$this->name = $name;
$this->email = $email;
}
}