- Added recursion to RouteFetching
This commit is contained in:
parent
56a5c45588
commit
6fcfd20aed
|
@ -46,16 +46,23 @@ class RouteFetcher {
|
||||||
$this->folderList = $list;
|
$this->folderList = $list;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function scan() : Generator
|
public function scan(? array $folders = null) : Generator
|
||||||
{
|
{
|
||||||
foreach($this->folderList as $namespace => $folder) {
|
foreach($folders ?: $this->folderList as $namespace => $folder) {
|
||||||
if ( ! file_exists($folder) ) {
|
if ( ! file_exists($folder) ) {
|
||||||
throw new RuntimeException(sprintf("Folder `%s` can not be found or scanned", $folder));
|
throw new RuntimeException(sprintf("Folder `%s` can not be found or scanned", $folder));
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (new DirectoryIterator($folder) as $fileinfo) {
|
foreach (new DirectoryIterator($folder) as $fileinfo) {
|
||||||
if ( ! $fileinfo->isDot() ) {
|
if ( ! $fileinfo->isDot() ) {
|
||||||
yield $namespace => $fileinfo;
|
if ( $fileinfo->isDir() ) {
|
||||||
|
foreach($this->scan([ "{$namespace}\\" . $fileinfo->getBasename() => $fileinfo->getPathname() ]) as $ns2 => $fi2) {
|
||||||
|
yield $ns2 => $fi2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
yield $namespace => $fileinfo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,6 +71,10 @@ class RouteFetcher {
|
||||||
public function compile() : Generator
|
public function compile() : Generator
|
||||||
{
|
{
|
||||||
foreach($this->scan() as $namespace => $file) {
|
foreach($this->scan() as $namespace => $file) {
|
||||||
|
if ( $file->getExtension() !== "php" ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$base = "";
|
$base = "";
|
||||||
$class = $this->generateClassname($file->getBasename(".php"), $namespace);
|
$class = $this->generateClassname($file->getBasename(".php"), $namespace);
|
||||||
$methods = $this->defaultMethods;
|
$methods = $this->defaultMethods;
|
||||||
|
@ -80,6 +91,7 @@ class RouteFetcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
$routeList = $objectResolver->getAnnotationListFromClassname( $this->annotations['method'] );
|
$routeList = $objectResolver->getAnnotationListFromClassname( $this->annotations['method'] );
|
||||||
|
|
||||||
foreach($routeList as $func => $routes) {
|
foreach($routeList as $func => $routes) {
|
||||||
foreach($routes as $route) {
|
foreach($routes as $route) {
|
||||||
$route->base = $base;
|
$route->base = $base;
|
||||||
|
|
Loading…
Reference in New Issue