2017-04-01 71 views
0

我试图用名称空间编写我的第一个框架。 我有扩展类控制器的问题。 我得到在PHP中使用命名空间扩展一个类

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

的控制器寻找的是:

namespace src\libs; 
class Controller 
{} 

这里是在src/controllers/

namespace src\controllers; 
use src\libs as libs; 
class Index extends libs\Controller 
{} 

我Index类我自动加载:

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的文件,所以我不会收到错误。我不知道为什么它不起作用。

+0

什么是你'Controller'的位置? –

+0

src/libs/Controller.php – demotywatorking

+0

我希望这会帮助你调试你的代码。 –

回答

0

它工作正常,我

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

现在它正在工作,因为我在Bootstrap中有一个错误。我是名字空间的初学者;) – demotywatorking