Sintaxe de Atributo
Existem várias partes para a sintaxe de atributos. Primeiro, uma declaração
de atributo é sempre incluída com um
#[
inicial e um ]
final correspondente. Dentro, um ou vários atributos são listados,
separados por vírgula. O nome do atributo é um nome não qualificado, qualificado ou totalmente qualificado,
conforme descrito em Noções Básicas do Uso de Namespaces.
Os argumentos para o atributo são opcionais, mas são colocados entre parênteses ()
.
Os argumentos para atributos só podem ser valores literais ou expressões constantes. Tanto a sintaxe de
argumentos posicionais quanto a dos argumentos nomeados podem ser usadas.
Os nomes dos atributos e seus argumentos são resolvidos para uma classe e os argumentos são passados para seu construtor, quando uma instância do atributo é solicitada por meio da API Reflection. Como tal, uma classe deve ser introduzida para cada atributo.
Example #1 Sintaxe de Atributo
<?php
// a.php
namespace MyExample;
use Attribute;
#[Attribute]
class MyAttribute
{
const VALUE = 'value';
private $value;
public function __construct($value = null)
{
$this->value = $value;
}
}
// b.php
namespace Another;
use MyExample\MyAttribute;
#[MyAttribute]
#[\MyExample\MyAttribute]
#[MyAttribute(1234)]
#[MyAttribute(value: 1234)]
#[MyAttribute(MyAttribute::VALUE)]
#[MyAttribute(array("key" => "value"))]
#[MyAttribute(100 + 200)]
class Thing
{
}
#[MyAttribute(1234), MyAttribute(5678)]
class AnotherThing
{
}