我正在浏览__autoload
提供的PHP
功能。
然而,这是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;
}
}
并抛出此错误:
我的目录结构如下:
app -> engine -> controller -> base.php
app -> index.php
我不确定发生了什么错误。我正在学习如何使用namespace
和__autoload
我也试过spl_autoload_register
但没有成功。请建议。
修改:1
另外,如果我想用spl_autoload_register替换它,可以实现它。
答案 0 :(得分:1)
不确定,但值得一试:
在base.php中,更改为第1行的namespace engine\controllers;
。
在index.php中,在第23行更改为use engine\controllers as Controllers;
(删除前导反斜杠)。