1

index.phpファイルがあり、一番上に__autoloadマジック関数を定義しています。

function __autoload($className) {
   echo "autoloading $className";
   require_once('application/models/'.strtolower($className).'.php');
}

次に、__ autoloadによって自動的に含まれるUserオブジェクト(User.php)を参照します。この瞬間まで、すべてが正常に機能します。問題は、User.phpがFileクラスを参照していることです

        $obj->numberOfUploads = File::countUploadsByUser($obj->ID);

この時点でエラーがスローされます

致命的なエラー:19行目のZ:\ home \ project \ www \ application \ models\user.phpにクラス「ファイル」が見つかりません

問題は、私が出力を見ることができるということです

ユーザーの自動読み込み

しかし、ファイルを再構築するものは何も見えません。したがって、見たところ、Fileへの参照がキャッチされた場合、__autoload関数はまったく呼び出されません。User.phpに__autoload関数を追加しようとすると、関数の再宣言に関するエラーが発生しました。

以前に質問があった場合は申し訳ありませんが、グーグルで検索しても情報が見つかりませんでした。

乾杯

4

1 に答える 1

3

PHP マニュアルの autoloadに関するコメントから、__autoload2 回定義することに関して、多くの人が同様の問題を抱えているようです。

spl_autoload_registerそのページの例 1 に示されているように、複数の定義の競合を避けるために匿名関数を使用することをお勧めします。

// Or, using an anonymous function as of PHP 5.3.0
spl_autoload_register(function ($class) {
    include 'classes/' . $class . '.class.php';
});

また、クラスが既に見つかっている場合は、ハンドラーが再度呼び出されないため、使用する必要はありませんrequire_once(単に使用できます)。require

spl_autoload_registerファイル内でのみ使用してみてください。index.phpそれが機能しない場合は、ファイルにも入れてくださいUser.php

頑張ってください!

于 2012-12-28T05:40:00.240 に答える