แอตทริบิวต์คือประเภทของคลาสที่สามารถใช้เพื่อเพิ่มข้อมูลเมตาให้กับคลาส ฟังก์ชัน เมธอดของคลาส คุณสมบัติคลาส ค่าคงที่ และพารามิเตอร์อื่นๆ แอตทริบิวต์ไม่ทำอะไรเลยระหว่างรันไทม์
แอตทริบิวต์ไม่มีผลกระทบต่อโค้ด แต่มีให้สำหรับ API การสะท้อน คุณลักษณะใน PHP 8 ช่วยให้โค้ดอื่นตรวจสอบคุณสมบัติและเมธอดของคลาสได้
-
เราสามารถมีแอตทริบิวต์ประกาศได้มากกว่าหนึ่งรายการ
-
อาจแก้ไขชื่อคลาสได้
-
สามารถเนมสเปซแอตทริบิวต์ได้
-
อาจมีพารามิเตอร์เป็นศูนย์หรือมากกว่า
ไวยากรณ์แอตทริบิวต์ PHP 8
-
ใน PHP 8 #[ ] (# และวงเล็บเหลี่ยม) ใช้สำหรับการประกาศแอตทริบิวต์
-
เราสามารถประกาศแอตทริบิวต์หลายรายการภายใน #[ ] โดยคั่นด้วยเครื่องหมายจุลภาค
-
อาร์กิวเมนต์เป็นทางเลือกที่จะใช้แต่ต้องอยู่ในวงเล็บ ()
-
อาร์กิวเมนต์อาจเป็นค่าตามตัวอักษรหรือนิพจน์คงที่
แอตทริบิวต์:ไวยากรณ์
#[attribute]
เราสามารถใช้แอตทริบิวต์ของคลาสได้ เป็นต้น
#[Attribute] Final class EmpClass{ }
ตัวอย่าง:ฟังก์ชันแอตทริบิวต์
#[Attr('param')] function Exam(){}
ตัวอย่าง:คลาสแอตทริบิวต์
#[Attr('param')] class Exam{}
ตัวอย่าง:คุณสมบัติคลาสแอตทริบิวต์
class Emp{ #[Attribute('param')] public $name; }
ตัวอย่าง:ค่าคงที่คลาสแอตทริบิวต์
Class Emp{ #[Attribute('emp')] private const EMP = 'emp'; }
ตัวอย่าง:ฟังก์ชันแอตทริบิวต์
#[Attribute('emp')] function exam(){}
ตัวอย่าง:อาร์กิวเมนต์วิธีการแอตทริบิวต์
Function emp(#[Attribute('param')]$name){ }
ตัวอย่าง:PHP 8 Attribute โดยใช้ฟังก์ชัน วิธีการ พารามิเตอร์ และค่าคงที่
<?php #[MyAttribute] class Emp { #[MyAttribute] public const EMP = 'emp'; #[MyAttribute] public $a; #[MyAttribute] public function foo(#[MyAttribute] $dept){} } $object = new #[MyAttribute] class(){}; #[MyAttribute] function f() {} $f1 = #[MyAttribute] function(){}; $f2 = #[MyAttribute] fn() => 1; print_r($f1); ?>
ผลลัพธ์
Closure Object ( )