Attribute syntax
Attribuut syntaxis
Attribuut syntaxis bestaat uit verschillende belangrijke componenten. Een attribuutverklaring begint met #[ en eindigt met ]. Binnenin kunnen een of meer attributen worden opgesomd, gescheiden door komma's. De attribuutnaam kan ongekwalificeerd, gekwalificeerd of volledig gekwalificeerd zijn, zoals beschreven in Using Namespaces Basics. Argumenten voor het attribuut zijn optioneel en omgeven door haakjes (). Argumenten kunnen alleen letterlijke waarden of constante expressies zijn. Zowel positionele als benoemde argument syntaxis worden ondersteund.
Attribuutnamen en hun argumenten worden opgelost naar een klasse, en de argumenten worden doorgegeven aan de constructor wanneer een instantie van het attribuut wordt opgevraagd via de Reflection API. Daarom wordt aanbevolen om een klasse voor elk attribuut in te voeren.
Voorbeeld: Attribuut Syntaxis
<?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
{
}