Die Syntax eines Attributs besteht aus mehreren Schlüsselkomponenten. Die
Deklaration eines Attributs beginnt mit #[
und endet mit
]
. Sie kann ein oder mehrere Attribute enthalten, die
durch Kommata getrennt sind. Der Name des Attributs kann unqualifiziert,
qualifiziert oder voll qualifiziert sein, wie in
Grundlagen zu Namensräumen
beschrieben.
Argumente für das Attribut sind optional und werden in Klammern
()
eingeschlossen. Argumente können nur Literalwerte
oder konstante Ausdrücke sein. Es wird sowohl die Syntax für
Positionsargumente als auch für benannte Argumente unterstützt.
Wenn ein Attribut über die Reflection-API angefordert wird, wird sein Name wie ein Klassenname behandelt und seine Argumente werden an seinen Konstruktor übergeben. Es wird daher empfohlen, für jedes Attribut eine Klasse einzuführen.
Beispiel #1 Syntax von Attributen
<?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
{
}