2017-04-01 130 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