Как исключить подключение файла? Здравствуйте, есть класс для работы с базой данныхdb = new mysqli(HOST, USER, PASS, DATABASE); if(!$this->db){ echo "Невозможно установить соединение с базой данныхКод ошибки:"; exit(mysql_error()); } else { mysqli_set_charset($this->db, 'utf8'); } } } И есть функция __autoloaddefine('DIRSEP', DIRECTORY_SEPARATOR); function __autoload($class_name) { $class_peaces = explode('\\', $class_name); switch ($class_peaces[0]) { case 'model': $dirpath = ROOT . DIRSEP . implode(DIRSEP, $class_peaces) . '.php'; require_once $dirpath; break; } } Проблема в том что при подключении файла с классом Database($db = new model\Database();) пытается автоматически подключить также класс mysqli.php Warning: require_once(W:/domains/testPHPoop\model\mysqli.php): failed to open stream: No such file or directory in W:\domains\testPHPoop\functions.php on line 15 Fatal error: require_once(): Failed opening required 'W:/domains/testPHPoop\model\mysqli.php' (include_path='.;w:/modules/php/PHP-5.4;w:/modules/php/PHP-5.4/PEAR/pear') in W:\domains\testPHPoop\functions.php on line 15 Как избежать подключения этого несуществующего файла? Спасибо
Для исключения подключения файла mysqli.php можно использовать условие в функции __autoload, чтобы проверить, что класс, который пытается быть загружен, не является классом mysqli. Вот как это можно сделать:
function __autoload($class_name) { $class_peaces = explode('\\', $class_name); switch ($class_peaces[0]) { case 'model': if ($class_peaces[1] !== 'Database') { // проверяем, не является ли класс mysqli $dirpath = ROOT . DIRSEP . implode(DIRSEP, $class_peaces) . '.php'; require_once $dirpath; } break; } }
Таким образом, если класс, который пытается быть загружен, не является классом Database, то файл с этим классом будет загружен без попытки загрузить файл mysqli.php.
Для исключения подключения файла mysqli.php можно использовать условие в функции __autoload, чтобы проверить, что класс, который пытается быть загружен, не является классом mysqli. Вот как это можно сделать:
function __autoload($class_name) {$class_peaces = explode('\\', $class_name);
switch ($class_peaces[0]) {
case 'model':
if ($class_peaces[1] !== 'Database') { // проверяем, не является ли класс mysqli
$dirpath = ROOT . DIRSEP . implode(DIRSEP, $class_peaces) . '.php';
require_once $dirpath;
}
break;
}
}
Таким образом, если класс, который пытается быть загружен, не является классом Database, то файл с этим классом будет загружен без попытки загрузить файл mysqli.php.