gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 01:12:30 25 4
gpt4 key购买 nike

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

它无法识别 LoggerInterface 类型提示,但这是直接从示例中提取的,所以我不明白我做错了什么。

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

服务类:

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

配置.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');
?>

异常(exception):

object(DI\Definition\Exception\InvalidDefinition)#115 (7) {
["message":protected]=> string(196) "Entry "TestService" cannot be resolved: Parameter $logger of __construct() has no value defined or guessable Full definition: Object ( class = arkon\ServiceLayer\TestService lazy = false )"

最佳答案

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

参见 this documentation .

关于PHP DI - 无法解析 __construct() 的参数 $logger 没有定义或猜测的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49552647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com