Syntaxe des attributs

La syntaxe des attributs comporte plusieurs parties. Tout d'abord, une déclaration d'attribut est toujours entourée d'un #[ et d'une terminaison correspondante ]. À l'intérieur, un ou plusieurs attributs séparés par une virgule sont énumérés. Le nom de l'attribut est un nom non qualifié, qualifié ou pleinement qualifié, comme décrit dans la section Utilisation des espaces de noms : introduction. Les arguments de l'attribut sont facultatifs, mais ils sont placés entre les parenthèses habituelles (). Les arguments des attributs ne peuvent être que des valeurs littérales ou des expressions constantes. Les syntaxes des arguments positionnels et nommés peuvent toutes deux être utilisées.

Les noms d'attributs et leurs arguments sont résolus à une classe et les arguments sont transmis à son constructeur lorsqu'une instance de l'attribut est demandée par l'intermédiaire de l'API de réflexion. Ainsi une classe doit être introduite pour chaque attribut.

Exemple #1 Syntaxe des attributs

<?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
{
}
To Top