#[Attribute]
class ListensTo
{
public string $event;
public function __construct(string $event)
{
$this->event = $event;
}
}
通过注解你可以将:匿名类、函数、常量、闭包函数添加类属性中。
#[
Route(Http::POST, '/products/create'),
Autowire,
]
class ProductsCreateController
{
public function __invoke() { /* … */ }
}
你可以使用反射来获取它们,你可以向[getAttributes]传递可选的参数,以便过滤结果。
$attributes = $reflectionClass->getAttributes(
ContainerAttribute::class,
ReflectionAttribute::IS_INSTANCEOF
);
Order::class;
$object::class;
2丶Numeric Values(数值)
使用[_]操作符来格式化数字值:
$price = 100_10;
// $100 and 10 cents
3丶Trailing Commas(逗号)
在以下地方允许使用逗号:
数组(Arrays)
方法调用(Function calls)
方法定义(Function definitions)
闭包方法 use(Closure use statements)
$error = fn($message) => throw new Error($message);
$input = $data['input'] ?? throw new Exception('Input not set');
你也不必再用[try catch]捕捉异常了。
try {
// …
} catch (SpecificException) {
throw new OtherException();
}
$message = match ($statusCode) {
200, 300 => null,
400 => 'not found',
500 => 'server error',
default => 'unknown status code',
};
setcookie(
name: 'test',
expires: time() + 60 * 60 * 2,
);
已命名的参数也支持[...]传参。
$data = [
'name' => 'test',
'expires' => time() + 60 * 60 * 2,
];
setcookie(...$data);
文章评论
---
@电影里的路人 。。
@庞.统 哈哈哈哈哈