php MongoDB\Driver\Manager 在执行 Symfony 命令时找不到



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

[Symfony\Component\Debug\Exception\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 MongoDBDriverManager;

PhpStorm 识别导入。

任何想法是什么阻止类加载?再一次,当我浏览页面等时,它会正常加载。

谢谢!

更新(根据要求(!

已注册服务:

services:
test.service:
class: AppBundleTestTestService
public: true

服务内容:

namespace AppBundleTest;

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

将此添加到执行方法:

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

结果:

[Symfony\Component\Debug\Exception\ClassNotFoundException]
试图从命名空间"MongoDB\Driver">
加载类"Manager"。您是否忘记了另一个命名空间的"use"语句?

我错过了什么?

另一个更新

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

事实证明,我不能使用命名空间,但只能在运行时通过完全限定的名称获取类(管理器!!

我遇到了同样的问题,并且被错误消息分散了注意力,在未正确安装所有扩展的 CLI 上下文中执行脚本时会出现此问题。

检查是否安装了所有扩展,尤其是 MongoDb 的扩展。

最新更新