好的,所以我有一个项目我的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)!!!
答案 0 :(得分:1)
我遇到了同样的问题,并且由于错误消息而分心,在不是所有扩展名都已正确安装的CLI上下文中执行脚本时会发生此问题。
检查是否已安装所有扩展程序,尤其是MongoDb。