示例#1
0
 /**
  * @param ClassName $className
  *
  * @return ClassName
  */
 public function shorten(ClassName $className)
 {
     if (!$className->isAbsolute()) {
         return $className;
     }
     foreach ($this->usedClasses() as $tuple) {
         list($usedClass, $as) = $tuple;
         if ($this->comparator()->equals($usedClass, $className)) {
             return $as;
         }
     }
     if (null !== $this->namespaceName() && $this->namespaceName()->hasDescendant($className)) {
         return $className->stripNamespace($this->namespaceName());
     }
     return $className;
 }
示例#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;
 }