示例#1
0
 /**
  * @param ClassName                 $className
  * @param array<array<ClassName>>   $usedClasses
  * @param array<MethodDefinition>   $methods
  * @param array<PropertyDefinition> $properties
  */
 public function __construct(ClassName $className, array $usedClasses = array(), array $methods = array(), array $properties = array())
 {
     $this->typeCheck = TypeCheck::get(__CLASS__, func_get_args());
     $this->className = $className->toAbsolute();
     $this->methods = $methods;
     $this->properties = $properties;
     if ($className->hasParent()) {
         $namespaceName = $className->parent();
     } else {
         $namespaceName = null;
     }
     $this->classNameResolver = new ClassNameResolver($namespaceName, $usedClasses);
 }
示例#2
0
 /**
  * @param ClassName       $className
  * @param Comparator|null $comparator
  *
  * @return boolean
  */
 public function hasDescendant(ClassName $className, Comparator $comparator = null)
 {
     if ($this->isAbsolute() !== $className->isAbsolute()) {
         return false;
     }
     if (null === $comparator) {
         $comparator = new Comparator();
     }
     while ($className->hasParent()) {
         $className = $className->parent();
         if ($comparator->equals($this, $className)) {
             return true;
         }
     }
     return false;
 }