执行Symfony命令

时间:2017-08-18 10:52:34

标签: php mongodb symfony

好的,所以我有一个项目我的mongo连接在查看页面等时工作正常。但是当我尝试在命令中加载管理类(ContainerAwareCommand)时,我得到了类找不到异常:

[Symfony的\元器件\调试\异常\的ClassNotFoundException]
  尝试从命名空间“MongoDB \ Driver”加载类“Manager”   您是否忘记了另一个命名空间的“use”语句?

我正在使用symfony 3.2

这就是我的所作所为:

class TestCommand extends ContainerAwareCommand {
   protected function configure() {
      $this->setName('testcommand:test')
        ->setDescription('Test...')
        ->setHelp('Test...');
   }

 protected function execute(InputInterface $input, OutputInterface   $output) {
    $db = new Manager("mongodb://localhost:27017");
    $output->writeln([
        'Test',
        '========================',
        '',
    ]);
  }
 }

我用以下代码导入驱动程序:

use MongoDB\Driver\Manager;

PhpStorm认可导入。

有什么想法阻止课程加载?再次,当我浏览我的页面等时,它会正常加载。

谢谢!

更新(根据要求)!

注册服务:

services:
  test.service:
    class: AppBundle\Test\TestService
    public: true

服务:

namespace AppBundle\Test;


use MongoDB\Driver\Manager;

class TestService {

   public function foo() {
      $manager = new Manager("mongodb://localhost:27017");
   }
}

将此添加到执行方法:

$ts = $this->getContainer()->get("test.service");
$ts->foo();

结果:

[Symfony的\元器件\调试\异常\的ClassNotFoundException]
  尝试从命名空间“MongoDB \ Driver”加载类“Manager”   您是否忘记了另一个命名空间的“use”语句?

我错过了什么?

另一个更新

我还注意到,由于相同但更常见的错误,我无法切换到生产。

原来我不能使用命名空间,但可以在RUN TIME仅通过完全限定名称获取类(Manager)!!!

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并且由于错误消息而分心,在不是所有扩展名都已正确安装的CLI上下文中执行脚本时会发生此问题。

检查是否已安装所有扩展程序,尤其是MongoDb。

相关问题