好的,所以我有一个项目,我的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 的扩展。