Declaring Attribute Classes
Attribuut Klassen Declareren
Het wordt aanbevolen om een aparte klasse voor elk attribuut te definiëren. In de eenvoudigste vorm is een lege klasse met de declaratie voldoende. Het attribuut kan worden geïmporteerd vanuit de globale namespace met behulp van een use statement.
Voorbeeld: Eenvoudige Attribuut Klasse
<?php
namespace Example;
use Attribute;
#[Attribute]
class MyAttribute
{
}
Om de types van declaraties waarop een attribuut kan worden toegepast te beperken, geef je een bitmasker door als het eerste argument aan de #[Attribute] declaratie.
Voorbeeld: Gebruik van doel specificatie om te beperken waar attributen kunnen worden gebruikt
<?php
namespace Example;
use Attribute;
#[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION)]
class MyAttribute
{
}
Het declareren op een ander type zal nu een uitzondering genereren tijdens de aanroep van MyAttribute``ReflectionAttribute::newInstance.
De volgende doelen kunnen worden gespecificeerd:
Attribute::TARGET_CLASS``Attribute::TARGET_FUNCTION``Attribute::TARGET_METHOD``Attribute::TARGET_PROPERTY``Attribute::TARGET_CLASS_CONSTANT``Attribute::TARGET_PARAMETER``Attribute::TARGET_ALL
Standaard kan een attribuut slechts één keer per declaratie worden gebruikt. Om een attribuut herhaalbaar te maken, specificeer je het in het bitmasker van de #[Attribute] declaratie met behulp van de Attribute::IS_REPEATABLE vlag.
Voorbeeld: Gebruik van IS_REPEATABLE om attribuut op een declaratie meerdere keren toe te staan
<?php
namespace Example;
use Attribute;
#[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION | Attribute::IS_REPEATABLE)]
class MyAttribute
{
}