mirror of
https://github.com/sitelease/sugar-cube-client.git
synced 2025-10-29 11: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