Syntax von Attributen

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
{
}