4

クラスのドキュメントを使用して作成したPHPスクリプトを機能させるために、クラスをロードしようとしています。

私のサーバーはPHP5.3を実行しているので、ドキュメントでは次のようにクラスをロードすることを推奨しています。

spl_autoload_register(function($class){
    if (file_exists('/webgit/webroot/home/myUsername/www/elastica/lib/' . $class . '.php')) {
       echo " found \n ";
       require_once('/webgit/webroot/home/myUsername/www/elastica/lib/' . $class . '.php');
    }
    else {
       echo " not found! ";
    }
});

唯一異なるのは、ifとelseのスイートにechoを含めたことです。また、myUsernameは、実際にはサーバー上のファイルシステムパスにある私のユーザー名です。

次に、それ(ドキュメント)は、次のようにクラスの新しいインスタンスを作成することを提案しています。

$elasticaClient = new \Elastica\Client();

ただし、クラスが見つからないというエラーが発生します。エラーと私のif-elseのスイートを含めて、正確に出力されるものは次のとおりです。

見つかりません!致命的なエラー:クラス'Elastica\Client'が17行目の/webgit/webroot/home/myUsername/www/elastica/index.phpに見つかりません

17行目は、クラスのインスタンスを作成しようとしている行です。

現在、index.phpは上記のコードがある場所であり、私のサーバーの/ webgit / webroot / home / myUsername / www /elastica/にあります。

そして、すべてのクラスファイルは/ webgit / webroot / home / myUsername / www / elastica /lib/にあります

そのため、クラスを検索/ロードできない理由がわかりません。

これを解決するために助けていただければ幸いです。

4

2 に答える 2

1

not found!-ファイルが見つからなかったことを意味します。クラスではなくファイル。

変数$classには、名前空間を持つ完全なクラス名が含まれていますElastica\Client。あなたは/webgit/webroot/home/myUsername/www/elastica/lib/Elastica\Client.phpファイルを持っていると確信していますか?

自動ロードでPHP名前空間を使用するにはどうすればよいですかそしてPSR-0について学びます。

于 2013-03-15T01:15:31.353 に答える
0

過度の誤りにより編集されました。ただし、マイクはコメントに保存する価値のあるリンクを持っています。

于 2013-03-14T23:50:25.563 に答える