Files
kiri-router/src/Annotate/AutoController.php
T
2023-07-25 10:09:06 +08:00

32 lines
607 B
PHP

<?php
declare(strict_types=1);
namespace Kiri\Router\Annotate;
use ReflectionException;
#[\Attribute(\Attribute::TARGET_CLASS)]
class AutoController
{
/**
* @throws ReflectionException
*/
public function dispatch(object $object): void
{
$reflection = \Kiri::getDi()->getReflectionClass($object::class);
foreach ($reflection->getMethods() as $method) {
$attributes = $method->getAttributes();
foreach ($attributes as $attribute) {
if (!class_exists($attribute->getName())) {
continue;
}
$attribute->newInstance()->dispatch($object, $method->getName());
}
}
}
}