Я пытаюсь обновить Symfony с 2.3 до 3.4. На данный момент я пытаюсь решить проблему с инъекцией зависимости. Похоже, старая версия класса DependencyInjection\Definition
вызывала бы метод Factory, когда была установлена фабрика, но это изменилось?
Я пытался использовать это руководство для обновления кода:
https://gist.github.com/mickaelandrieu/5211d0047e7a6fbff925#dependencyinjection. Но я считаю, что поведение класса изменилось.
Итак, это оригинальный код:
public function getSymfonyValue()
{
$def = new \Symfony\Component\DependencyInjection\Definition("Zend_Config");
$def->setFactoryClass(__CLASS__);
$def->setFactoryMethod('valueFactory');
$def->addArgument($this->_configPath);
return $def;
}
, который вызывает этот метод:
public function valueFactory($configPath){
...
return $value;
}
Я обновил тело метода следующим образом:
$def = new \Symfony\Component\DependencyInjection\Definition("Zend_Config");
$def->setFactory(__CLASS__);
$def->addMethodCall('valueFactory', [$this->_configPath]);
return $def;
Я ожидал, что код вызовет функцию valueFactory
, но эта функция никогда не вызывается. Это может быть потому, что старый код не имеет контейнера? Я не уверен