使用 PHP 中的命名空间扩展 class

extending a class with namespace in PHP

我正在尝试编写我的第一个带有名称空间的框架。 我在扩展 class 控制器时遇到问题。 我得到

Fatal error: Class 'Controller' not found in xxx/src/controllers/index.php on line 3

控制器看起来是:

namespace src\libs;
class Controller 
{}

这是我在 src/controllers/

中的索引 class
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 可以工作,因为它包含带有 class 控制器的文件,我没有收到错误。我不知道为什么它不起作用。

它对我来说很好

文件: /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
{}