由于缓存的服务容器

时间:2016-07-22 12:52:51

标签: php symfony caching circular-dependency

我的问题归结为我所做的事情本身是错误的还是我发现了一个错误。我根本不确定......

我做了什么?我们有一个基于Symfony 2.8的相对正常的应用程序。在那里,我们也使用通常的服务容器。此外,为了维护,我们定义了一组命令来调用命令行。在开发过程中,我在类的构造函数中添加了另一个参数,该类在其中一个命令中使用。

我现在遇到的问题是我无法正确部署它。当我只是替换代码并调用app/console cache:clear从服务定义重新生成缓存的服务容器时,因为在启动时,内核尝试使用缓存的服务容器实例化所有命令。由于缓存服务不提供新参数,但更改的代码需要参数,启动失败。

进一步观察:

  • 该命令从基类扩展setContainer()方法以检索其自己的依赖项。在这种情况下,一个命令无法从服务容器中检索其依赖项。我想知道setContainer()是否过早 - 如果我将其推迟到execute(),这只会在实际调用命令时失败但在调用cache:clear时不会失败。 / LI>
  • 我还认为如果某些命令的初始化失败,Symfony不应该中止启动。它应该警告用户,但继续加载其他命令。更重要的是,它甚至不应该加载未使用的命令。
  • 在我的特定情况下,我认为只是不加载该命令(或在错误时跳过它)就可以完成这项工作,但我不确定是否总是如此。
  • 作为解决方法,我当然可以删除缓存文件夹。但是cache:clear命令的重点是什么?如果它不起作用?

0 个答案:

没有答案