. */ declare(strict_types=1); namespace SP\Domain\Common\Handlers; use ReflectionAttribute; use ReflectionClass; use ReflectionMethod; use SP\Domain\Common\Attributes\Authorize; /** * Trait AuthorizationHandler */ trait AuthorizationHandler { private static function authorize(): string { $ref = new ReflectionClass(self::class); foreach ($ref->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { /** @var array> $attributes */ $attributes = $method->getAttributes(Authorize::class); if (count($attributes) === 1) { $attributes[0]->newInstance()->actionId; } } } }