Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-DI:如何使用自定义构造函数参数值创建接口实现?_Php_Php Di - Fatal编程技术网

PHP-DI:如何使用自定义构造函数参数值创建接口实现?

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

我使用的是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 $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时,它才能工作。但我需要动态接口实现

如何让它以我想要的方式工作