Syntax von Attributen

Die Syntax von Attributen besteht aus mehreren Teilen. Zunächst wird eine Attributdeklaration immer mit einem öffnenden #[ und einem dazugehörigen abschließenden ] umschlossen. Darin werden ein oder mehrere Attribute durch Komma getrennt aufgelistet. Die Attribute können mit unqualifizierten, qualifizierten oder vollqualifizierten Namen angegeben werden, wie es in den Grundlagen der Verwendung von Namespaces beschrieben ist. Die Argumente für ein Attribut sind optional und werden in einer normalen Klammer () eingeschlossen. Die Argumente für Attribute können nur Literalwerte oder konstante Ausdrücke sein. Es kann sowohl die Syntax für positionale als auch für benannte Argumente verwendet werden.

Wenn ein Attribut über die Reflection-API angefordert wird, wird sein Name wie ein Klassenname behandelt und seine Argumente werden an seinen Konstruktor übergeben. Für jedes Attribut muss also eine entsprechende Klasse existieren.

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
{
}
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top