Оголошення класів атрибутів
Хоча й немає суворої вимоги, краще виконувати рекомендацію — створювати клас для кожного атрибуту. У найпростішому випадку необхідно створити порожній клас із атрибутом #[Attribute]
клас якого можна імпортувати з глобального простору імен через оператор use.
Приклад #1 Простий клас з атрибутом
Loading...
Щоб обмежити типи сутностей, на які можна націлити атрибут, необхідно в момент оголошення атрибута #[Attribute]
передати як перший аргумент бітову маску.
Приклад #2 Специфікація вказівки цілей, яким атрибут може бути наданий
Loading...
Після такого декларування спроба присвоїти атрибут MyAttribute іншої сутності, тип якої відрізняється від методу або функції, призведе до викидання винятку під час виклику ReflectionAttribute::newInstance()
Можна вказати такі цілі:
Attribute::TARGET_CLASS
Attribute::TARGET_FUNCTION
Attribute::TARGET_METHOD
Attribute::TARGET_PROPERTY
Attribute::TARGET_CLASS_CONSTANT
Attribute::TARGET_PARAMETER
Attribute::TARGET_ALL
За умовчанням атрибут можна присвоїти сутності лише один раз. Присвоїти однакові атрибути однієї сутності можна, якщо оголосити атрибут #[Attribute]
з прапором Attribute::IS_REPEATABLE
у бітовій масці.
Приклад #3 Застосування константи IS_REPEATABLE при оголошенні атрибуту для дозволу його багаторазового надання
Loading...