path; } /** * Reads attributes from methods in a IRouteHandler instance and registers them to a given IRouter instance. * * @param IRouter $router Router instance. * @param IRouteHandler $handler Handler instance. */ public static function register(IRouter $router, IRouteHandler $handler): void { $objectInfo = new ReflectionObject($handler); $methodInfos = $objectInfo->getMethods(); foreach($methodInfos as $methodInfo) { $attrInfos = $methodInfo->getAttributes(HandlerAttribute::class); foreach($attrInfos as $attrInfo) { $handlerInfo = $attrInfo->newInstance(); $closure = $methodInfo->getClosure($methodInfo->isStatic() ? null : $handler); if($handlerInfo instanceof HttpRoute) $router->add($handlerInfo->getMethod(), $handlerInfo->getPath(), $closure); else $router->use($handlerInfo->getPath(), $closure); } } } }