Symfony 4中使用MongoClient报错,需添加何种正确的use语句?
解决MongoClient类找不到的命名空间问题
这个问题很典型,是命名空间规则导致的——你的Admin控制器处于App\Controller\Admin命名空间下,PHP会默认在这个命名空间内查找MongoClient类,但它实际上属于全局(根)命名空间,所以才会报出“忘记use语句”的错误。
这里有两个简单直接的解决办法:
方法一:添加use语句
在你的Admin控制器文件顶部,所有已有的use语句区域添加这一行:
use MongoClient;
添加后,你就可以正常使用new MongoClient();的写法调用类了。
方法二:使用全局命名空间前缀
如果不想额外添加use语句,直接在实例化类的时候给类名加上反斜杠前缀,明确告诉PHP去全局命名空间查找这个类:
$mongo = new \MongoClient();
补充说明
你已经安装的alcaeus/mongo-php-adapter会提供旧版的MongoClient类来适配新的mongodb扩展,所以只要解决了命名空间的问题,你的代码就能正常运行。另外你提到mongodb-odm-bundle可以正常工作,是因为该Bundle的代码已经正确处理了命名空间逻辑,或是使用了自身封装的客户端实现。
内容的提问来源于stack exchange,提问作者flexicon
相关产品推荐
相关产品推荐

