Всем привет. Делаю автозагрузку, но есть проблема. Если использую function __autoload , то все работает, если использую spl_autoload_register, то получаю Fatal error: Class 'Config' not found in C:\OpenServer\domains\mvcframework\config\config.php on line 4
Почему так происходит? И как это исправить.
Только не говорите, что не надо писать свой велосипед, лучше используй фреймворки, я хочу разобраться сначала с велосипедом.
Вот код:
<?php
require_once (ROOT.DS.'config'.DS.'config.php');
function __autoload($class_name){
$lib_path = ROOT.DS.'lib'.DS.strtolower($class_name).'.class.php';
$controllers_path = ROOT.DS.'controllers'.DS.str_replace('controller', '', strtolower($class_name)).'.controller.php';
$model_path = ROOT.DS.'models'.DS.strtolower($class_name).'.php';
if (file_exists($lib_path)){
require_once ($lib_path);
} elseif (file_exists($controllers_path)){
require_once ($controllers_path);
} elseif (file_exists($model_path)){
require_once ($model_path);
} else {
throw new Exception('Failed to include class' . $class_name);
}
}
Вот другой код:
<?php
require_once (ROOT.DS.'config'.DS.'config.php');
//функция автозагруки, загружающая классы из папки libs:
function loadFromLibs($aClassName) {
$aClassFilePath = ROOT.DS.'lib'.DS.strtolower($aClassName).'.class.php';
if (file_exists($aClassFilePath)) {
echo "<p>executing __aturoload() with aClassName = {$aClassName}</p>";
require_once $aClassFilePath;
return true;
}
return false;
}
//функция автозагруки, загружающая классы из папки controllers:
function loadFromClassesFront($aClassName) {
$aClassFilePath = ROOT.DS.'controllers'.DS.str_replace('controller', '', strtolower($aClassName)).'.controller.php';
if (file_exists($aClassFilePath)) {
echo "<p>executing __aturoload() with aClassName = {$aClassName}</p>";
require_once $aClassFilePath;
return true;
}
return false;
}
//функция автозагруки, загружающая классы из папки controllers/admin/:
function loadFromClassesAdmin($aClassName) {
$aClassFilePath = ROOT.DS.'controllers'.DS.'admin'.DS.str_replace('controller', '', strtolower($aClassName)).'.controller.php';
if (file_exists($aClassFilePath)) {
echo "<p>executing __aturoload() with aClassName = {$aClassName}</p>";
require_once $aClassFilePath;
return true;
}
return false;
}
//функция автозагруки, загружающая классы из папки Models:
function loadFromModels($aClassName) {
$aClassFilePath = ROOT.DS.'models'.DS.strtolower($aClassName).'.php';
if (file_exists($aClassFilePath)) {
echo "<p>executing __aturoload() with aClassName = {$aClassName}</p>";
require_once $aClassFilePath;
return true;
}
return false;
}
spl_autoload_register('loadFromLibs');
spl_autoload_register('loadFromClassesFront');
spl_autoload_register('loadFromClassesAdmin');
spl_autoload_register('loadFromModels');
В чем проблема?