- Work mostly completed, some more test to be done (like possible recursion to avoid), but still working
This commit is contained in:
		
							parent
							
								
									eed3c693c7
								
							
						
					
					
						commit
						4549d93583
					
				@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace Notes\Breadcrumb\Attribute\Method;
 | 
					namespace Notes\Breadcrumb\Attribute\Method;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[\Attribute]
 | 
					#[\Attribute(\Attribute::IS_REPEATABLE | \Attribute::TARGET_METHOD)]
 | 
				
			||||||
class Breadcrumb implements \Notes\Attribute {
 | 
					class Breadcrumb implements \Notes\Attribute {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Route $routeAnnotation;
 | 
					    public Route $routeAnnotation;
 | 
				
			||||||
 | 
				
			|||||||
@ -3,24 +3,24 @@
 | 
				
			|||||||
use Notes\ObjectReflection,
 | 
					use Notes\ObjectReflection,
 | 
				
			||||||
    Notes\ObjectResolver;
 | 
					    Notes\ObjectResolver;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Notes\Route\RouteFetcher;
 | 
					use Notes\Route\{ RouteFetcher, Annotation as RouteAnnotation };
 | 
				
			||||||
use Psr\Http\Message\ServerRequestInterface;
 | 
					use Psr\Http\Message\ServerRequestInterface;
 | 
				
			||||||
use Psr\SimpleCache\CacheInterface;
 | 
					use Psr\SimpleCache\CacheInterface;
 | 
				
			||||||
use RuntimeException, DirectoryIterator, Generator;
 | 
					use RuntimeException, DirectoryIterator, Generator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Breadcrumb extends RouteFetcher {
 | 
					class Breadcrumb extends RouteFetcher {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function getRouteTree(\Notes\Route\Annotation\Method\Route $route) : array
 | 
					    public function getRouteTree(RouteAnnotation\Method\Route|\Notes\Route\Attribute\Method\Route $route) : array
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $tree = [];
 | 
					        $tree = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $routes = $this->compile([
 | 
					        $routes = $this->compile([
 | 
				
			||||||
            'object' => [ Annotation\Object\Route::class, Attribute\Object\Route::class ],
 | 
					            'object' => [ RouteAnnotation\Object\Route::class, Attribute\Object\Route::class ],
 | 
				
			||||||
            'method' => [ Annotation\Method\Route::class ],
 | 
					            'method' => [ RouteAnnotation\Method\Route::class ],
 | 
				
			||||||
        ]);
 | 
					        ]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $crumbs = $this->compile([
 | 
					        $crumbs = $this->compile([
 | 
				
			||||||
            'method' => [ Annotation\Method\Breadcrumb::class, Attribute\Method\Breadcrumb::class ],
 | 
					            'method' => [ Attribute\Method\Breadcrumb::class ],
 | 
				
			||||||
        ]);
 | 
					        ]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        while( $route ) {
 | 
					        while( $route ) {
 | 
				
			||||||
@ -41,7 +41,7 @@ class Breadcrumb extends RouteFetcher {
 | 
				
			|||||||
        return array_reverse($tree);
 | 
					        return array_reverse($tree);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected function getRouteAnnotation(array $list, Annotation\Method\Breadcrumb $crumb) : null|\Notes\Route\Annotation\Method\Route
 | 
					    protected function getRouteAnnotation(array $list, Annotation\Method\Breadcrumb|Attribute\Method\Breadcrumb $crumb) : null|RouteAnnotation\Method\Route|\Notes\Route\Attribute\Method\Route
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if ($crumb->parent ?? null) {
 | 
					        if ($crumb->parent ?? null) {
 | 
				
			||||||
            foreach ($list as $route) {
 | 
					            foreach ($list as $route) {
 | 
				
			||||||
@ -54,7 +54,7 @@ class Breadcrumb extends RouteFetcher {
 | 
				
			|||||||
        return null;
 | 
					        return null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected function getBreadcrumbAnnotation(array $list, \Notes\Route\Annotation\Method\Route $route) : null|Annotation\Method\Breadcrumb
 | 
					    protected function getBreadcrumbAnnotation(array $list, RouteAnnotation\Method\Route|\Notes\Route\Attribute\Method\Route $route) : null|Annotation\Method\Breadcrumb|Attribute\Method\Breadcrumb
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        foreach($list as $crumb) {
 | 
					        foreach($list as $crumb) {
 | 
				
			||||||
            if ($crumb->class === $route->class && $crumb->classMethod === $route->classMethod) {
 | 
					            if ($crumb->class === $route->class && $crumb->classMethod === $route->classMethod) {
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user