/** * @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); }
/** * @param ClassName $validatorNamespace */ public function setValidatorNamespace(ClassName $validatorNamespace) { $this->typeCheck->setValidatorNamespace(func_get_args()); $this->validatorNamespace = $validatorNamespace->toAbsolute(); }
/** * @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); }