Я новичок в PHP-DI и действительно не понимаю, что мне не хватает.
У меня есть контейнер:
$definitonFile = __DIR__ . '/app/etc/di_config.php';
$containerBuilder = new \DI\ContainerBuilder();
$containerBuilder->useAutowiring(true);
$containerBuilder->addDefinitions($definitonFile);
$container = $containerBuilder->build();
$container->call(["Vendor\MyTestClass", "getName"], []);
В файле определения:
return [
'Logger' => DI\autowire()->constructor('app.log'),
];
И int MyTestClass
<?php
namespace Vendor;
use Monolog\Logger;
class MyTestClass
{
/**
* @var Logger
*/
private $logger;
public function __construct(Logger $logger)
{
$this->logger = $logger;
}
public function getName()
{
var_dump($this->logger);
}
}
По какой-то причине я получаю это сообщение об ошибке:
Неустранимая ошибка: Uncaught DI \ Definition \ Exception \ InvalidDefinition: Запись «Vendor \ MyTestClass» не может быть разрешена: запись «Monolog \ Logger» не может быть разрешена: параметр $ name для __construct () не имеет ни определенного, ни предполагаемого значения Полное определение: Object (class = Monolog \ Logger lazy = false __construct ($name = # UNDEFINED # $ handlers = (значение по умолчанию) array () $ processors = (default value) array ())) Полное определение: Object (class = Vendor \ MyTestClass lazy = false __construct ($ logger = get (Monolog \ Logger)))) в /var/www/dmholding.lh/vendor/php-di/php-di/src/Definition/Exception/InvalidDefinition.php в строке 18
Я делаю точно так же, как в документация .
Может кто-нибудь взглянуть на это?