PHP自定义命名空间下创建mysqli对象报类未找到错误如何解决?
报错根因
你的代码位于Mysql\NewLib自定义命名空间下,PHP在当前命名空间中实例化类时,默认会优先查找当前命名空间下的类定义。mysqli是PHP内置的全局命名空间类,未指定命名空间前缀时系统会将其识别为Mysql\NewLib\mysqli,找不到对应类就抛出该报错。
解决方案
二选一即可:
- 方案1:实例化时添加全局命名空间前缀
修改new_lib.php中mysqli实例化的代码,在类名前加\明确指定调用全局命名空间下的mysqli类:
// 原代码 // $this->mysql_client = new mysqli($creds['host'], $creds['user'], $creds['pwd'], $creds['db_name']); // 修改后代码 $this->mysql_client = new \mysqli($creds['host'], $creds['user'], $creds['pwd'], $creds['db_name']);
- 方案2:文件顶部use声明引入全局mysqli类
在new_lib.php的命名空间声明后添加use引入,原有实例化代码无需改动:
<?php namespace Mysql\NewLib; use mysqli; // 新增这一行 interface NewLibMethods { } // 后续原有代码保持不变
额外排查项
如果修改后仍报错,按以下步骤验证:
- 确认PHP环境已安装启用mysqli扩展:执行命令
php -m | grep mysqli,有输出则代表扩展已启用,也可通过phpinfo()页面搜索mysqli项确认。 - 确认代码中命名空间、类名拼写无错误。
内容的提问来源于stack exchange,提问作者EastsideDev
相关产品推荐
相关产品推荐

