แอตทริบิวต์คือประเภทของคลาสที่สามารถใช้เพื่อเพิ่มข้อมูลเมตาให้กับคลาส ฟังก์ชัน เมธอดของคลาส คุณสมบัติคลาส ค่าคงที่ และพารามิเตอร์อื่นๆ แอตทริบิวต์ไม่ทำอะไรเลยระหว่างรันไทม์
แอตทริบิวต์ไม่มีผลกระทบต่อโค้ด แต่มีให้สำหรับ 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 ( )