コード例 #1
0
ファイル: Validator.php プロジェクト: phaldan/asset-builder
 /**
  * @param $abstractClass
  * @param $concreteClass
  */
 public function validateConcrete($abstractClass, $concreteClass)
 {
     $reflection = new ReflectionClass($concreteClass);
     if (!$reflection->isSubclassOf($abstractClass) && $abstractClass != $reflection->getName()) {
         throw InvalidArgumentException::notSubclass($concreteClass, $abstractClass);
     }
     if ($reflection->isInterface() || $reflection->isAbstract()) {
         throw InvalidArgumentException::couldNotCreateConcreteInstance($concreteClass);
     }
 }
コード例 #2
0
ファイル: Generator.php プロジェクト: phaldan/asset-builder
 private function validateParameter(ReflectionClass $class, ReflectionParameter $parameter)
 {
     if (is_null($parameter->getClass())) {
         throw InvalidArgumentException::constructorContainsStaticParameter($class->getName(), $parameter->getName());
     }
     if ($this->dependencyChain->contains($parameter->getClass()->getName())) {
         $this->dependencyChain->push($parameter->getClass()->getName());
         throw InvalidArgumentException::dependencyChainContainsLoop($parameter->getName(), $class->getName(), $this->dependencyChain);
     }
 }