PHP8 attribute collector.
- php>=8
composer require yarfox/attributes-collector
- Install
- Add php file
AttributeConfig.php
to your project.
class AttributeConfig implements ConfigInterface
{
#[ArrayShape(['scanDirs' => 'array'])]
public static function getAttributeConfigs(): array
{
return [
'scanDirs' => [
__NAMESPACE__ => __DIR__,
],
];
}
}
- Add attribute and attribute handler.
// Attribute
#[Attribute(Attribute::TARGET_CLASS)]
class ClassAttribute
{
public const TEST = 'test';
private string $test;
public function __construct(#[ExpectedValues(valuesFromClass: ClassAttribute::class)] string $test)
{
$this->test = $test;
}
public function getTest(): string
{
return $this->test;
}
}
// AttributeHandler
#[AttributeHandler(ClassAttribute::class)]
class ClassAttributeHandler extends AbstractHandler
{
public function handle(): void
{
/**
* @var $attribute ClassAttribute
*/
var_dump($this);
$attribute = $this->attribute;
var_dump($attribute->getTest());
}
}
- Use Attribute
#[ClassAttribute(ClassAttribute::TEST)]
class ClassAttributeTest
{
}
- Start scan.
AttributeKeeper::bootloader();
AttributeKeeper::collect();