【发布时间】:2020-04-14 08:38:27
【问题描述】:
我有一个小型数据库类,我正在尝试使用 PDO 连接到我的数据库,但我收到了这个错误:
致命错误:未捕获的错误:在 /var/www/html/app/lib/DB.php:11 中找不到类“app\lib\PDO”
我检查了是否使用此代码启用了PDO:
if ( extension_loaded('pdo_mysql') ) {
exit('yes');
}
输出是“是”。
我还检查了我的php.ini,我确实有这一行(没有半列):
extension=pdo_mysql
这是我的DB.php 代码:
namespace app\lib;
class DB{
private static $instance = null;
public $pdo;
private function __construct(){
try {
$this->pdo = new PDO('mysql:host=127.0.0.1;dbname=db', 'user', 'password');
} catch (PDOException $e) {
exit($e->getMessage());
}
}
public static function instance(){
if(!isset(self::$instance)){
self::$instance = new self();
}
return self::$instance;
}
}
这是我的自动加载器(init.php)文件:
define('DS', DIRECTORY_SEPARATOR);
spl_autoload_register(function($namespace){
$path = dirname(__FILE__) . DS . str_replace('\\', DS, $namespace . '.php');
if(file_exists($path)){
require_once $path;
}
});
这就是我尝试设置新的DB 连接的方式:
require_once 'init.php';
$db = app\lib\DB::instance();
P.S:如果我不使用命名空间并使用程序代码,Pdo 可以工作:
try {
$pdo = new PDO('mysql:host=127.0.0.1;dbname=db',
'user', 'password');
} catch (PDOException $e) {
exit($e->getMessage());
}
【问题讨论】:
标签: php pdo namespaces