PHP-DI:如何使用自定义构造函数参数值创建接口实现?
我使用的是PHPDI6.0.10 我的DI配置中有接口实现: \App\Writer\WriterInterface::class=>DI\get(\App\Writer\Text::class) 它的构造函数如下所示:PHP-DI:如何使用自定义构造函数参数值创建接口实现?,php,php-di,Php,Php Di,我使用的是PHPDI6.0.10 我的DI配置中有接口实现: \App\Writer\WriterInterface::class=>DI\get(\App\Writer\Text::class) 它的构造函数如下所示: class TextWriter implements WriterInterface ... public function __construct(Settings $settings, DataConverter $dataConverter, string $fil
class TextWriter implements WriterInterface
...
public function __construct(Settings $settings, DataConverter $dataConverter, string $filePath)
{
$this->init($filePath);
$this->settings = $settings;
$this->dataConverter = $dataConverter;
}
在我的应用程序中,我想用动态$filePath参数实例化writer:
$this->container->make(WriterInterface::class, ['filePath' => $this->getFilePath()]);
但我得到了这个错误:
DI\Definition\Exception\InvalidDefinition:条目“App\Writer\Text”
无法解析:\构造()的参数$filePath没有值
已定义或可猜测的完整定义:对象(
class=App\Writer\Text
懒惰=错误
__构造(
$settings=get(应用程序\设置)
$dataConverter=get(应用程序\数据转换器)
$filePath=#未定义#
)
怎么了?我深入研究了DI代码,发现它像\DI\definition\SelfResolvingDefinition一样处理我的定义,并且没有将参数传递给resolve()方法。只有在我为make()方法显式指定接口实现-App\Writer\Text时,它才能工作。但我需要动态接口实现
如何让它以我想要的方式工作