2013-06-13 256 views
0

我正在通過PHP提供__autoload功能。__autoload命名空間類給文件找不到致命錯誤

然而,這是index.php我: -

define('app_path', realpath('../')); 

$paths = array(
     app_path, get_include_path()); 
set_include_path(implode(PATH_SEPARATOR, $paths)); 

function __autoload($classname) 
{ 
    $filename = str_replace('\\', '/', $classname.'.php'); 
    require_once $filename; 
} 

use \engine\controllers as Controllers; 

$data = new Controllers\base(); // This one is line no. 25 (Here is error) 
echo $data->mind('Hi'); 

而這一次爲我的base.php: -

namespace controllers; 
class base { 
    public function __construct() { 
     echo __CLASS__ . '<br/>'; 
     echo __NAMESPACE__; 
    } 

    public function mind($myname) 
    { 
     echo $myname; 
    } 
} 

,並拋出這個錯誤:

enter image description here

我目錄結構如下:

app -> engine -> controller -> base.php

app -> index.php

我不知道什麼是錯的發生。我正在學習如何使用namespace__autoload

我也試過spl_autoload_register但沒有成功。請建議。

編輯:1

另外,如果我想與spl_autoload_register如何可以實施來取代它。

回答

1

不知道,但值得一試:

在base.php,上線23號線。

而在index.php文件,更改改爲namespace engine\controllers;use engine\controllers as Controllers;(刪除前導反斜槓)。

+0

OMG你是親愛的:*這就是爲什麼工程師是上帝的孩子......你們可以聞到每一個字母代碼。 –

+0

此外,如果我想用'spl_autoload_register'替換它,這可以如何實現。 –