0

私は提供する__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 に置き換えたい場合は、それをどのように実装できますか。

4

1 に答える 1

1

よくわかりませんが、試してみる価値があります:

base.php で、1 行目に変更しnamespace engine\controllers;ます。

また、index.php のuse engine\controllers as Controllers;23 行目で (先頭のバックスラッシュを削除) に変更します。

于 2013-06-13T12:18:15.580 に答える