/** * Build a new route and add it to the Map. * * @param array $methods Array containing http methods. * The supported methods are defined by Request::METHOD_* constants * @param string $routeStr A string that may contain parameters * that will be passed to the controller. * For example: * - /home * - /product/{productId} * - /tag/{slug} * @param array $info An array containing the following indexes: * - controller: Name of a controller class * - action: Method of the defined controller (Default: index) * - alias: Short name of the route, for easy referencing */ public static function create(array $methods, string $routeStr, array $info) { $middlewareList = isset($info['middleware']) ? (array) $info['middleware'] : []; array_walk_recursive(self::$middlewareGroupStack, function ($middleware) use(&$middlewareList) { $middlewareList[] = $middleware; }); $route = new self(); $route->setMethods($methods); $route->setAction(isset($info['action']) ? $info['action'] : 'index'); $route->setAlias(isset($info['alias']) ? $info['alias'] : ''); $route->setMiddlewareList($middlewareList); $route->setControllerName($info['controller']); $route->setMethods($methods); $route->setRouteStr($routeStr); Map::addRoute($route); }
public static function fromReflection(ZendL_Reflection_Class $reflectionClass) { $class = new self(); $class->setSourceContent($class->getSourceContent()); $class->setSourceDirty(false); if ($reflectionClass->getDocComment() != '') { $class->setDocblock(ZendL_Tool_CodeGenerator_Php_Docblock::fromReflection($reflectionClass->getDocblock())); } $class->setAbstract($reflectionClass->isAbstract()); $class->setName($reflectionClass->getName()); if ($parentClass = $reflectionClass->getParentClass()) { $class->setExtendedClass($parentClass->getName()); } $class->setImplementedInterfaces($reflectionClass->getInterfaceNames()); $properties = array(); foreach ($reflectionClass->getProperties() as $reflectionProperty) { if ($reflectionProperty->getDeclaringClass()->getName() == $class->getName()) { $properties[] = ZendL_Tool_CodeGenerator_Php_Property::fromReflection($reflectionProperty); } } $class->setProperties($properties); $methods = array(); foreach ($reflectionClass->getMethods() as $reflectionMethod) { if ($reflectionMethod->getDeclaringClass()->getName() == $class->getName()) { $methods[] = ZendL_Tool_CodeGenerator_Php_Method::fromReflection($reflectionMethod); } } $class->setMethods($methods); return $class; }
/** * fromReflection() - build a Code Generation Php Object from a Class Reflection * * @param \Zend\Reflection\ReflectionClass $reflectionClass * @return \Zend\CodeGenerator\Php\PhpClass */ public static function fromReflection(\Zend\Reflection\ReflectionClass $reflectionClass) { $class = new self(); $class->setSourceContent($class->getSourceContent()); $class->setSourceDirty(false); if ($reflectionClass->getDocComment() != '') { $class->setDocblock(PhpDocblock::fromReflection($reflectionClass->getDocblock())); } $class->setAbstract($reflectionClass->isAbstract()); // set the namespace if ($reflectionClass->inNamespace()) { $class->setNamespaceName($reflectionClass->getNamespaceName()); } $class->setName($reflectionClass->getName()); if ($parentClass = $reflectionClass->getParentClass()) { $class->setExtendedClass($parentClass->getName()); $interfaces = array_diff($reflectionClass->getInterfaces(), $parentClass->getInterfaces()); } else { $interfaces = $reflectionClass->getInterfaces(); } $interfaceNames = array(); foreach($interfaces AS $interface) { $interfaceNames[] = $interface->getName(); } $class->setImplementedInterfaces($interfaceNames); $properties = array(); foreach ($reflectionClass->getProperties() as $reflectionProperty) { if ($reflectionProperty->getDeclaringClass()->getName() == $class->getName()) { $properties[] = PhpProperty::fromReflection($reflectionProperty); } } $class->setProperties($properties); $methods = array(); foreach ($reflectionClass->getMethods() as $reflectionMethod) { if ($reflectionMethod->getDeclaringClass()->getName() == $class->getName()) { $methods[] = PhpMethod::fromReflection($reflectionMethod); } } $class->setMethods($methods); return $class; }