While not strictly required it is recommended to create an actual class for every attribute. In the most simple case only an empty class is needed with the #[Attribute]
attribute declared that can be imported from the global namespace with a use statement.
Example #1 Using target specification to restrict where attributes can be used
To restrict the type of declaration an attribute can be assigned to, a bitmask can be passed as the first argument to the #[Attribute]
declaration.
Example #2 Simple Attribute Class
<?php namespace Example; use Attribute; #[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION)] class MyAttribute { }
Declaring MyAttribute on another type will now throw an exception during the call to ReflectionAttribute::newInstance()
By default an attribute can only be used once per declaration. If the attribute should be repeatable on declarations it must be specified as part of the bitmask to the #[Attribute]
declaration.
© 1997–2020 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://www.php.net/manual/en/language.attributes.classes.php