agdobrynin / di-container

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

Разрешение интерфейса по классу с параметрами #45

Closed agdobrynin closed 1 week ago

agdobrynin commented 1 week ago

Не работает определение

$definition = [
    ClassInterface::class => ClassFirst::class,

    ClassFirst::class => [
        'arguments' => [
            'file' => '@app.logger.file'
        ],
    ],
];

не учитывается созданное определение с аргументами на класс.

версия пакета v2.0.0

тест:

interface SumInterface
{
    public function add(int $num): int;
}

class Sum implements SumInterface
{
    public function __construct(protected int $init = 0) {}

    public function add(int $num): int
    {
        return $this->init + $num;
    }
}
 public function testByInterfaceByClassAndClassWithParams(): void
    {
        $definitions = [
            SumInterface::class => Sum::class,
            Classes\Sum::class => [
                'arguments' => [
                    'init' => 10,
                ],
            ],
        ];

        $c = (new DiContainerFactory())->make($definitions);

        $this->assertEquals(20, $c->get(SumInterface::class)->add(10));
    }