agdobrynin / di-container

PSR-11 compatible lightweight dependency injection container for PHP with automatic dependency bundling
MIT License
1 stars 0 forks source link

Resolve arguments without type hint and union types #59

Closed agdobrynin closed 22 hours ago

agdobrynin commented 22 hours ago

Хочется получить возможность внедрения зависимостей не типизированных и с объединяющим типом.

class ClassWithUnionType
{
    public function __construct(public \ReflectionClass|\ReflectionMethod $dependency) {}
}

$class = (new DiContainerFactory())->make([
    \ReflectionClass::class => [
         DiContainerInterface::ARGUMENTS => [
             'objectOrClass' => SomeClass::class,
         ],
    ],
])->get(ClassWithUnionType::class);
class ClassWithEmptyType
{
    public function __construct(public $dependency) {}
}

$container = (new DiContainerFactory())->make([
    'dependency' => SomeClass::class,
]);

$dependency = $container->get(ClassWithEmptyType::class)->dependency;

\assert($dependency instanceof SomeClass::class);
agdobrynin commented 22 hours ago

Реализовано.