gpt4 book ai didi

php - symfony2 CLI [Symfony\Component\Debug\Exception\ContextErrorException]

转载 作者:搜寻专家 更新时间:2023-10-31 20:38:53 24 4
gpt4 key购买 nike

我在尝试使用 Symfony2 的控制台组件在完整的 Symfony 堆栈应用程序中创建命令时遇到问题。

如果我尝试通过 DI 传递我的服务,当我尝试运行该命令时会抛出以下错误:

[Symfony\Component\Debug\Exception\ContextErrorException]  
Notice: Trying to get property of non-object

如果我使用 ContainerAwareCommand 创建命令并尝试使用

$this->getContainer()->get('mtgu.api.card.list.response.data');

我明白了

  [LogicException]                                                               
The container cannot be retrieved as the application instance is not yet set.

我的服务被挑衅地加载,因为它在前端 Controller 中使用。这个问题变得更奇怪了,就好像我通过了一个存储库服务——我没有遇到这个问题!

是否有一些技巧可以通过此设置服务?还是我搞砸了我的配置?

我通过在我的 DI 扩展中执行此操作来“自动加载”我的所有服务,而不是通过主要的 services.yml 包含它们。我认为这个或 yml 的顺序包括可能会影响它 - 但我已经尝试手动包括所有内容但仍然没有快乐!

$finder = new Finder();
$finder->name('services.yml');
/**
* @var $file SplFileInfo
*/
foreach($finder->in(__DIR__.'/../') as $file) {
$loader = new Loader\YamlFileLoader($container, new FileLocator($file->getPath()));
$loader->load('services.yml');
}

供应商/Bundle/Command/services.yml

services:

mtgu.command.slugify:
class: MightyStudios\MtguBundle\Command\SlugifyCommand
tags:
- { name: console.command }
arguments:
- @mtgu.api.card.list.response.data

我认为这可能只是一些配置问题,但谷歌让我找不到答案!有没有其他人遇到过这个问题,他们能解释一下吗?

非常感谢

最佳答案

更好的结构是将您的服务文件放在 Resources/config 中你的包的目录(另见所有核心包)。但是,除此之外。

问题由以下异常描述:无法检索容器,因为尚未设置应用程序实例。这是在 ContainerAwareCommand#getContainer() 中抛出的$this->application时的方法是null .该应用程序设置在 Application#add() 的第一行方法。

这意味着您调用 $this->getContainer()在将命令添加到应用程序之前。也许您在构造函数中使用它?

如果是这样,将其删除并仅使用 Command#execute() 中的容器, Command#interact()Command#initialize() .

关于php - symfony2 CLI [Symfony\Component\Debug\Exception\ContextErrorException],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28380814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com