PhpDeal\Contract\Fetcher\ParentClass\InvariantFetcher::getConditions PHP Method

getConditions() public method

Fetches conditions from all parent classes recursively
public getConditions ( ReflectionClass $class ) : array
$class ReflectionClass
return array
    public function getConditions(ReflectionClass $class)
    {
        $annotations = [];
        $parentClasses = [];
        while ($class = $class->getParentClass()) {
            $parentClasses[] = $class;
        }
        foreach ($parentClasses as $parentClass) {
            $annotations = array_merge($annotations, $this->annotationReader->getClassAnnotations($parentClass));
        }
        $contracts = $this->filterContractAnnotation($annotations);
        return $contracts;
    }

Usage Example

 /**
  * @param ReflectionClass $class
  * @return array
  */
 private function fetchAllContracts(ReflectionClass $class)
 {
     $allContracts = $this->invariantFetcher->getConditions($class);
     foreach ($this->reader->getClassAnnotations($class) as $annotation) {
         if ($annotation instanceof Invariant) {
             $allContracts[] = $annotation;
         }
     }
     return array_unique($allContracts);
 }
InvariantFetcher