add class alias support

This commit is contained in:
sunxyw
2022-12-25 18:15:07 +08:00
parent 05b3446f59
commit a813e80b32
8 changed files with 50 additions and 189 deletions

View File

@@ -0,0 +1,27 @@
<?php
declare(strict_types=1);
namespace ZM\Container;
use DI\Definition\Definition;
use DI\Definition\Reference;
use DI\Definition\Source\DefinitionSource;
class AliasDefinitionSource implements DefinitionSource
{
public function getDefinition(string $name): ?Definition
{
if (!class_exists($name)) {
return null;
}
$ref = (new \ReflectionClass($name))->getName();
// 如果反射类名和类名不一致,说明是别名,使用类名获取定义
return $ref === $name ? null : new Reference($ref);
}
public function getDefinitions(): array
{
return [];
}
}