Я пытаюсь написать свой первый фреймворк с пространствами имен.
У меня проблема с расширением класса Controller.
я получил
Неустранимая ошибка: класс ‘Controller’ не найден в xxx / src / controllers / index.php в строке 3
Контроллер выглядит так:
namespace src\libs;
class Controller
{}
А вот мой индексный класс в src/controllers/
namespace src\controllers;
use src\libs as libs;
class Index extends libs\Controller
{}
Моя автозагрузка:
function autoLoader($class)
{
$class = str_replace('\\', '/', $class);
if (file_exists('./' . $class . '.php')) {
require( './' . $class . '.php');
} else {
$class = explode('/', $class);
if (file_exists( LIBS . end($class) . '.php')) {
require( LIBS . end($class) . '.php');
} else {
echo 'Critical error!!';
exit;
}
}
}
LIBS = ./src/libs/
AutLoader работает, потому что он включает в себя файл с классом Controller, я не получаю ошибку. Я понятия не имею, почему это не работает.
У меня работает нормально
Файл: /var/www/html/PHP/Randoms/src/libs/Controller.php
<?php
namespace src\libs;
class Controller
{
}
Файл: /var/www/html/PHP/Randoms/src/controllers/Index.php
namespace src\controllers;
use src\libs as libs;
spl_autoload_register(function($classname){
$classPath=str_replace("\\", "/", $classname);
$filePath= dirname(__FILE__)."/../../".$classPath.".php";
if(file_exists($filePath))
{
require_once $filePath;
}
});
class Index extends libs\Controller
{}
Других решений пока нет …