php di-无法解析__ -construct()的参数$ logger没有定义或猜测的值



我正在尝试获得一个PHP-DI工作的基本示例,但是我很容易被卡在一个相当基本的示例中。我认为我在这里缺少一些简单的东西,但无法将其单独进行。

它没有识别loggerinterface类型的提示,但这是直接从示例中删除的,因此我不明白我在做什么错。

当我从服务签名中删除Loggerinterface时,该示例正常工作。

服务类:

<?php
namespace testServiceLayer;
class TestService extends BaseService{
  public function __construct(PsrLogLoggerInterface $logger){}
}
?>

config.php

<?php
use MonologLogger;
return [
    'TestService' => DIcreate(testServiceLayerTestService::class),
    PsrLogLoggerInterface::class => DIfactory(function () {
        $logger = new Logger('mylog');
        return $logger;
    }),
];
?>

用法:

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

例外:

object(di definition exception invalidDefinition(#115(7({
["消息":preected] => string(196("条目" TestService"不能为 已解决:__construct((的参数$ logger没有定义值或 可猜测的完整定义:对象( class = arkon servicelayer testservice 懒= false("

您正在使用create(),如果您希望该条目自动使用,则需要使用autowire()

请参阅此文档。

相关内容

  • 没有找到相关文章

最新更新