PHP DI-无法解析_construct()的参数$logger没有定义或可猜测的值

PHP DI-无法解析_construct()的参数$logger没有定义或可猜测的值,php,php-di,Php,Php Di,我试图获得一个PHP-DI工作的基本示例,但我很容易被困在一个相当基本的示例上。我想我在这里遗漏了一些简单的东西,但我没能把它挑出来 它没有识别LoggerInterface类型暗示,但这是直接从示例中提取的,因此我不理解我做错了什么 当我从服务签名中删除LoggerInterface时,该示例运行良好 服务类别: <?php namespace test\ServiceLayer; class TestService extends BaseService{ public funct

我试图获得一个PHP-DI工作的基本示例,但我很容易被困在一个相当基本的示例上。我想我在这里遗漏了一些简单的东西,但我没能把它挑出来

它没有识别LoggerInterface类型暗示,但这是直接从示例中提取的,因此我不理解我做错了什么

当我从服务签名中删除LoggerInterface时,该示例运行良好

服务类别:

<?php
namespace test\ServiceLayer;
class TestService extends BaseService{
  public function __construct(\Psr\Log\LoggerInterface $logger){}
}
?>

config.php

<?php
use Monolog\Logger;
return [
    'TestService' => \DI\create(\test\ServiceLayer\TestService::class),
    Psr\Log\LoggerInterface::class => DI\factory(function () {
        $logger = new Logger('mylog');
        return $logger;
    }),
];
?>

用法:

<?php
$builder = new \DI\ContainerBuilder();
$builder->addDefinitions('config.php');
$container = $builder->build();
$service = $container->get('TestService');
?>

例外情况:

对象(DI\Definition\Exception\InvalidDefinition)#115(7){
[“message”:protected]=>string(196)“条目”TestService”不能为空 已解决:_construct()的参数$logger没有定义值或 可猜测的完整定义:对象( class=arkon\ServiceLayer\TestService 懒惰=错误)

您使用的是
create()
,如果要自动连接条目,则需要使用
autowire()