首页 文章

在PHP中扩展带有命名空间的类

提问于
浏览
0

我正在尝试用命名空间编写我的第一个框架 . 我有扩展类控制器的问题 . 我明白了

致命错误:第3行的xxx / src / controllers / index.php中找不到类'Controller'

控制器看起来:

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工作,因为它包含类控制器的文件,我不会得到错误 . 我不知道为什么它不起作用 .

1 回答

  • 0

    它对我来说很好

    File: /var/www/html/PHP/Randoms/src/libs/Controller.php

    <?php
    namespace src\libs;
    class Controller 
    {
    
    }
    

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

相关问题