我已经为数据库操作创建了一个类。
该类继承自PDO类
使用该课程时会出现错误Fatal error: Class 'app\lib\PDO' not found
请注意,我使用了反斜杠\
和PDO的继承。
class Database extends \PDO {
private static $object;
private static $pdo;
function __construct() {
$db_config = Config::getItem('database');
try {
$dsn = "mysql:host=" . $db_config['db_host'] . ";dbname=" . $db_config['db_name'] . ";charset=" . $db_config['db_charset'] . "";
parent::__construct($dsn, $db_config['db_username'], $db_config['db_password']);
} catch (\PDOException $err) {
trigger_error($err->getMessage(), E_USER_ERROR);
}
}
......
答案 0 :(得分:0)
您可以通过检查文件是否存在来解决此问题,这是一个可以在所有自动加载案例中使用的通用代码,而不需要" \"
spl_autoload_register(function($class){
if(file_exists(SITE_PATH . 'app/classes/'. $class .'.php')){
require_once SITE_PATH . 'app/classes/'. $class .'.php';
}elseif(file_exists(SITE_PATH . 'app/another-folder/'. $class .'.php')){
require_once SITE_PATH . 'app/another-folder/'. $class .'.php';
}
});
答案 1 :(得分:0)
您已尝试在错误的命名空间中加载PDO
。它不在我们呈现的代码中。正如您在错误Fatal error: Class 'app\lib\PDO' not found
中看到的那样,它会尝试在命名空间PDO
中加载app\lib
类。您可能知道,它不在该命名空间中。
为了解决这个问题,您可以将其放在文件的顶部:
use \PDO;
或者您需要在每次使用\
课程之前放置PDO
。要了解有关命名空间的更多信息,请查看documentation。
PDO
是一个“普通”类,它有一个名称空间声明,如果你不在该名称空间中加载它,它将无法找到。就像任何其他类一样。在您的情况下,再次,您在app\lib
命名空间中拥有它。因此,您必须在PDO
命名空间中使用\PDO
类,因为这是该类所在的命名空间。