Юзаю php-di 6.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;
}
В своём приложении я хочу инстанциировать Writer с динамическим значением $filePath в конструкторе:
$this->container->make(WriterInterface::class, ['filePath' => $this->getFilePath()]);
Но вылазит такая ошибка:
DI\Definition\Exception\InvalidDefinition: Entry "App\Writer\Text" cannot be resolved: Parameter $filePath of __construct() has no value defined or guessable Full definition: Object ( class = App\Writer\Text lazy = false __construct( $settings = get(App\Settings) $dataConverter = get(App\DataConverter) $filePath = #UNDEFINED# )
Что не так? Работает только если я явно передаю App\Writer\Text вметод make(). Но мне нужно указывать именно интерфейс, а не реализацию.