示例#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 $validatorNamespace
  */
 public function setValidatorNamespace(ClassName $validatorNamespace)
 {
     $this->typeCheck->setValidatorNamespace(func_get_args());
     $this->validatorNamespace = $validatorNamespace->toAbsolute();
 }
示例#3
0
 /**
  * @param ClassName $className
  * @param string    $source
  *
  * @return ClassDefinition
  * @throws Exception\UndefinedClassException
  */
 public function classBySource(ClassName $className, $source)
 {
     $this->typeCheck->classBySource(func_get_args());
     foreach ($this->classesBySource($source) as $classDefinition) {
         if ($classDefinition->className()->string() === $className->toAbsolute()->string()) {
             return $classDefinition;
         }
     }
     throw new Exception\UndefinedClassException($className);
 }