Symfony v3.4 не может угадать аргумент при использовании функции автопроводки.
Невозможно автоматически подключить службу «AppBundle \ Service \ MyServiceConfig»: аргумент «$ key» метода «__construct ()» не имеет подсказки типа, вы должны явно указать его значение.
Я также явно определил аргумент, но он все еще не работает. Аргумент имеет тип string
длиной 136 символов.
services:
app.myservice.config:
class: AppBundle\Service\MyServiceConfig
public: true
arguments: ["%app_key%"] #defined in parameter.yml
app.myservice
class: AppBundle\Service\MyService
public: true
arguments: ["@app.myservice.config"]
Что работает абсолютно нормально, я могу видеть ожидаемые результаты при вызове служб.
Однако, когда я пишу AppExtension, я получаю вышеуказанную ошибку:
app.twig.my_app_extension:
class: AppBundle\Twig\MyAppExtension
arguments: [ "@app.myservice" ]
tags:
- { name: twig.extension }
поэтому я явно определил аргумент
app.myservice.config:
class: AppBundle\Service\MyServiceConfig
public: true
arguments:
$key: "%app_key%" #defined in parameter.yml
все равно не работает
Вот так выглядит класс MyServiceConfig:
class MyServiceConfig implements MyServiceConfigInterface {
/**
* @var string
*/
private $key;
public function __construct($key){
$this->key= $key;
}
}
MyAppExtension Class:
/**
* The MyAppExtension class
*/
class MyAppExtension extends \Twig_Extension
{
/**
* @var MyServiceConfigInterface $key
*/
private $key;
public function __construct(MyServiceConfigInterface $key){
$this->key= $key;
}
}
Решение, предоставленное здесь тоже не помогло, так как у меня есть service.yml внутри app/config/services.yml