mirror of
				https://github.com/sitelease/sugar-cube-client.git
				synced 2025-10-31 12:02:30 +01:00 
			
		
		
		
	Updated RequestChainable Interface and Trait
+ Added a new searchRequestChain() method that will climb up the request chain searching for an object of a certain class + Added some test code for the new method in the TestRun.php file
This commit is contained in:
		| @ -41,6 +41,18 @@ interface RequestChainableInterface | ||||
|      */ | ||||
|     public function getRequestChain(): array; | ||||
|  | ||||
|     /** | ||||
|      * Climb up the request chain searching for | ||||
|      * an object of a certain class | ||||
|      * | ||||
|      * If the object is found it will be returned, | ||||
|      * otherwise the method returns null | ||||
|      * | ||||
|      * @author Benjamin Blake (sitelease.ca) | ||||
|      * @param string $class The class of the object you are searching for | ||||
|      * @return object|null | ||||
|      */ | ||||
|     public function searchRequestChain(string $class): ?object; | ||||
|  | ||||
|     /** | ||||
|      * Return the request chain heirarchy | ||||
|  | ||||
| @ -74,6 +74,32 @@ trait RequestChainable | ||||
|         return $requestChain; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Climb up the request chain searching for | ||||
|      * an object of a certain class | ||||
|      * | ||||
|      * If the object is found it will be returned, | ||||
|      * otherwise the method returns null | ||||
|      * | ||||
|      * @author Benjamin Blake (sitelease.ca) | ||||
|      * @param string $class The class of the object you are searching for | ||||
|      * @return object|null | ||||
|      */ | ||||
|     public function searchRequestChain(string $class): ?object | ||||
|     { | ||||
|         $requestChain = $this->getRequestChain(); | ||||
|  | ||||
|         $foundObj = null; | ||||
|         foreach ($requestChain as $callerObj) { | ||||
|             if ($class == get_class($callerObj)) { | ||||
|                 $foundObj = $callerObj; | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $foundObj; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Return the request chain heirarchy | ||||
|      * as a string of class names | ||||
|  | ||||
| @ -5,6 +5,7 @@ namespace Gitea; | ||||
| require 'vendor/autoload.php'; | ||||
|  | ||||
| use Gitea\Client; | ||||
| use Gitea\Model\Repository; | ||||
|  | ||||
| print("Starting Script... \n"); | ||||
| print("Creating Guzzle client \n"); | ||||
| @ -65,6 +66,13 @@ if ($repository) { | ||||
|             if ($debugChain) { | ||||
|                 print("Chain ".$debugChain."\n"); | ||||
|             } | ||||
|             $foundObj = $branch->searchRequestChain(Repository::class); | ||||
|             if ($foundObj) { | ||||
|                 print("Repository class found \n"); | ||||
|                 print("Type: ".get_class($foundObj)." \n"); | ||||
|             } else{ | ||||
|                 print("Repository class NOT found \n"); | ||||
|             } | ||||
|             print("\n\n"); | ||||
|         } | ||||
|         print("Total Branches: ".count($branches)."\n"); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user