PHP 属性 Attribute
学习 PHP 8 属性,为类、方法、属性添加元数据,实现声明式编程。 · 难度:入门 · +15XP
属性概述
PHP 8 的属性(Attributes)允许将结构化元数据附加到类、方法、属性、常量等代码元素上,类似于其他语言的注解。
定义属性
#[\Attribute]
class Route {
public function __construct(public string $path) {}
}
使用属性
#[Route('/api/users')]
class UserController {
#[Route('/show')]
public function show(int $id) {}
}
读取属性
$ref = new ReflectionClass(UserController::class);
$attrs = $ref->getAttributes(Route::class);
foreach ($attrs as $attr) {
$route = $attr->newInstance();
echo $route->path; // /api/users
}
| 内置属性 | 用途 |
|---|---|
| #[Deprecated] | 标记废弃 |
| #[Override] | 标记重写方法 |
| #[SensitiveParameter] | 隐藏参数值 |
练习提示
定义一个 #[Log] 属性,用于标记需要记录日志的方法,并模拟读取。