为什么标量参数值注入在构造函数中不起作用?



我有设置类:

<?php
declare(strict_types=1);
namespace App;
class Settings
{
private $settings_dir;
private $settings_file_name;
//..

public function __construct(string $dir, string $file_name)
{
$this->settings_dir = $dir;
$this->settings_file_name = $file_name;
//...
}
//...
}

和 PHP-DI 的配置:

<?php
return [
//...
AppSettings::class => DIautowire()
->constructorParameter('dir', __DIR__),
AppSettings::class => DIautowire()
->constructorParameter('file_name', 'app.php'),
//...
];

当我启动我的应用程序时,它说:

DI\定义\

异常\无效定义:条目"App\Kernel"不能 已解析:无法解析条目"应用\设置":参数$dir 的 __construct(( 没有定义或猜测的值

当我使用一种方法设置所有值时,它可以正常工作:

<?php
return [
//...
AppSettings::class => DIautowire()
->constructor(__DIR__, 'app.php')
];

怎么了?我没有进行任何其他 DI 配置。

PHP-DI v6.0.2, PHP 7.2.5

这只是因为数组键重复。我必须使用:

AppSettings::class => DIautowire()->constructorParameter('dir', __DIR__)->constructorParameter('file_name', 'app.php')

相关内容

  • 没有找到相关文章

最新更新