Атрибуты в PHP простое объяснение

Попробуем разобраться в:
Что из себя представляют атрибуты
Какие преимущества от использования атрибутов
Напишем парочку примеров.

В первую очередь, атрибуты, что появились в php 8
Заменили нам уже когда-то имеющиеся аннотации,
которые например использовались в Doctrine, и находились они в docBlock пример можно посмотреть тут https://www.doctrine-project.org/projects/doctrine-orm/en/2.14/reference/annotations-reference.html что тогда, когда были аннотации, их разбирали путем парсинга докблока через рефлексию самого php

Из документации: Атрибуты предлагают возможность добавлять структурированные, машиночитаемые метаданные для следующих деклараций в коде: классы, методы, функции, параметры, свойства и константы класса.

P.S.: В этой статейке рассмотрим примеры относительно классов и методов

<?php
declare(strict_types=1);

#[Attribute]
class ClassExampleAttribute
{
    public function __construct(public string $testArgument)
    {}
}

class MyClass
{
    #[ClassExampleAttribute('Hello World')]
    public function index()
    {
		echo PHP_EOL.'Hi';
    }
}

$reflectionMethod = new \ReflectionMethod(MyClass::class, 'index');
$methodAttributes = $reflectionMethod->getAttributes();

print_r($methodAttributes[0]->newInstance()->testArgument);
print_r($reflectionMethod->invoke(new MyClass));

То есть, таким образом, мы можем связать метод с некоторой дополнительной логикой и внешним кодом, конфигурируя в описании атрибута

Loading

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *