This commit is contained in:
2021-02-22 19:07:34 +08:00
parent 491cfd38ff
commit 0467e3905a
2 changed files with 17 additions and 12 deletions
+2 -1
View File
@@ -11,6 +11,7 @@ namespace Snowflake\Abstracts;
use Exception; use Exception;
use JetBrains\PhpStorm\Pure;
use Snowflake\Error\Logger; use Snowflake\Error\Logger;
use Snowflake\Snowflake; use Snowflake\Snowflake;
@@ -45,7 +46,7 @@ class BaseObject implements Configure
/** /**
* @return string * @return string
*/ */
public static function className(): string #[Pure] public static function className(): string
{ {
return get_called_class(); return get_called_class();
} }
+9 -5
View File
@@ -174,8 +174,7 @@ class Container extends BaseObject
return [$reflection, []]; return [$reflection, []];
} }
foreach ($constructs->getParameters() as $key => $param) { foreach ($constructs->getParameters() as $key => $param) {
var_dump($class); $dependencies[] = $this->resolveDefaultValue($param, $class);
$dependencies[] = $this->resolveDefaultValue($param);
} }
$this->_constructs[$class] = $dependencies; $this->_constructs[$class] = $dependencies;
return [$reflection, $dependencies]; return [$reflection, $dependencies];
@@ -188,19 +187,24 @@ class Container extends BaseObject
* @throws NotFindClassException * @throws NotFindClassException
* @throws ReflectionException * @throws ReflectionException
*/ */
private function resolveDefaultValue(\ReflectionParameter $param): mixed private function resolveDefaultValue(\ReflectionParameter $param, $class): mixed
{ {
if ($param->isOptional()) { if ($param->isOptional()) {
return $param->getDefaultValue(); return $param->getDefaultValue();
} }
return match ($param->getType()) { try {
return match ($type = $param->getType()) {
'mixed' => $param->getDefaultValue(), 'mixed' => $param->getDefaultValue(),
'string' => '', 'string' => '',
'int', 'float' => 0, 'int', 'float' => 0,
'bool' => false, 'bool' => false,
'', null, 'object' => NULL, '', null, 'object' => NULL,
default => Snowflake::createObject($param->getType()) default => Snowflake::createObject($type)
}; };
} catch (\Throwable $throwable) {
var_dump($class, $throwable->getMessage());
return null;
}
} }