Как подключить класс PDO, если есть функция autoload()?

Есть функция:
/*
*
* Функция автоматического подключения классов.
*
*/
function autoload($className){
	//переводим в нижний регистр; заменяем обратные слеши.
	$path = str_replace('\\', '/', strtolower($className)).'.php';
	if(is_readable($path)){
		include_once($path);//подключаем файл
	}else throw new CriticalError('Класс не найден: '.$path);
}
//регистрируем функцию
spl_autoload_register('autoload');


Классы подключаю указанием пути к нему..например, $class = new engine\core\router();
Т.е. namespace engine\core; имя класса router;

Сейчас стал писать подключение к базе через PDO
class dbconnect{
	
	var $db;
	
	public function __construct(){
		try{
			$dsn = "mysql:host=".NAME_HOST.";dbname=".NAME_DB.";charset=utf8";//способ соединенния DSN
			$option = array(
				PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
				PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
				PDO::ATTR_EMULATE_PREPARES   => false
			);//необходимые опции
			$this -> db = new PDO($dsn, NAME_USER, PASS_USER, $option);//инициализация подключения
			$this -> db -> exec("set names utf8");//установка кодировки
			return $this -> db;
		}catch(PDOException $e){
			throw new CriticalError('Нет подключения к БД: '.$e>getMessage());
		}
	}
}

И столкнулся с тем, что $this -> db = new PDO(...); постоянно вызывает ошибку о том, что класс не найден...
Я понимаю, что это из-за функции автоподключения классов....

Как его правильно подключить? мб какой-то namespace нужен, о котором я не знаю?
  • Вопрос задан
  • 2924 просмотра
Решения вопроса 1
BoShurik
@BoShurik
Symfony developer
Попробуйте так (со слешем):
$this->db = new \PDO(...);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
svd71
@svd71
я делаю так:

class dbconnect extends PDO{

function dbconnect(){
try {
....
parent: _construct($dsn, ......);
...
}catch (.....){.....}
}

}
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Класс PDO предоставляет вам экстеншен. Судя по всему вы его не установили.

И да, наследоваться от PDO плохая затея. Вообще наследоваться нужно очень осторожно. Лучше завернуть в класс аля Connection и там хранить инстанс PDO.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы