diff --git a/System/Abstracts/BaseObject.php b/System/Abstracts/BaseObject.php index 59109e62..117d5dca 100644 --- a/System/Abstracts/BaseObject.php +++ b/System/Abstracts/BaseObject.php @@ -11,6 +11,7 @@ namespace Snowflake\Abstracts; use Exception; +use JetBrains\PhpStorm\Pure; use Snowflake\Error\Logger; use Snowflake\Snowflake; @@ -45,7 +46,7 @@ class BaseObject implements Configure /** * @return string */ - public static function className(): string + #[Pure] public static function className(): string { return get_called_class(); } diff --git a/System/Di/Container.php b/System/Di/Container.php index 2fe06b30..8144ad37 100644 --- a/System/Di/Container.php +++ b/System/Di/Container.php @@ -174,8 +174,7 @@ class Container extends BaseObject return [$reflection, []]; } foreach ($constructs->getParameters() as $key => $param) { - var_dump($class); - $dependencies[] = $this->resolveDefaultValue($param); + $dependencies[] = $this->resolveDefaultValue($param, $class); } $this->_constructs[$class] = $dependencies; return [$reflection, $dependencies]; @@ -188,19 +187,24 @@ class Container extends BaseObject * @throws NotFindClassException * @throws ReflectionException */ - private function resolveDefaultValue(\ReflectionParameter $param): mixed + private function resolveDefaultValue(\ReflectionParameter $param, $class): mixed { if ($param->isOptional()) { return $param->getDefaultValue(); } - return match ($param->getType()) { - 'mixed' => $param->getDefaultValue(), - 'string' => '', - 'int', 'float' => 0, - 'bool' => false, - '', null, 'object' => NULL, - default => Snowflake::createObject($param->getType()) - }; + try { + return match ($type = $param->getType()) { + 'mixed' => $param->getDefaultValue(), + 'string' => '', + 'int', 'float' => 0, + 'bool' => false, + '', null, 'object' => NULL, + default => Snowflake::createObject($type) + }; + } catch (\Throwable $throwable) { + var_dump($class, $throwable->getMessage()); + return null; + } }