This commit is contained in:
2021-08-04 17:51:33 +08:00
parent 3516a8bae0
commit d43bc87268
+5 -3
View File
@@ -107,6 +107,9 @@ class Container extends BaseObject
private function resolve($class, $constrict, $config): object private function resolve($class, $constrict, $config): object
{ {
$reflect = $this->resolveDependencies($class); $reflect = $this->resolveDependencies($class);
if (!$reflect->isInstantiable()) {
throw new ReflectionException('Class ' . $class . ' cannot be instantiated');
}
$object = $this->newInstance($reflect, $constrict); $object = $this->newInstance($reflect, $constrict);
@@ -210,13 +213,12 @@ class Container extends BaseObject
/** /**
* @param $class * @param $class
* @return ReflectionClass * @return ReflectionClass
* @throws ReflectionException
*/ */
private function resolveDependencies($class): ReflectionClass private function resolveDependencies($class): ReflectionClass
{ {
$reflect = new ReflectionClass($class); $reflect = new ReflectionClass($class);
if ($reflect->isAbstract() || !$reflect->isInstantiable()) { if ($reflect->isAbstract() || $reflect->isTrait() || $reflect->isInterface()) {
throw new ReflectionException('Class ' . $class . ' cannot be instantiated'); return $this->_reflection[$class] = $reflect;
} }
$this->setPropertyNote($reflect); $this->setPropertyNote($reflect);
$this->setTargetNote($reflect); $this->setTargetNote($reflect);