PHP 8 中的属性
phpserver side programmingprogramming更新于 2025/9/8 20:05:00
属性是一种类,可用于向其他类、函数、类方法、类属性、常量和参数添加元数据。属性在运行时不执行任何操作。
属性对代码没有影响,但可用于反射 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 属性
<?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 ( )

