Есть функция:
/*
*
* Функция автоматического подключения классов.
*
*/
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 нужен, о котором я не знаю?