Composer が動作していて、そのオートローダーを使用してクラスをロードしたいのですが、動作しません。これが私のディレクトリ構造です。始めはとてもシンプルにしています。
index.php
composer.json
Vendor
controllers/webgl.php
私が持っているwebgl.phpの中に:
namespace controllers;
class webgl {
public function lesson1() {
}
}
index.php には次のものがあります。
require('vendor/autoload.php');
//require_once('controllers/webgl.php');
$webglController = new \controllers\webgl;
そして、私の composer.json は、オートロード用にこれを定義しています:
"autoload": {
"psr-4": {
"controllers\\": "controllers/"
}
}
2 番目の require のコメントを外すと、スクリプトは機能します。そうしないと、「致命的なエラー: クラス 'controllers\webgl' が 5 行目の /vagrant/index.php に見つかりません」というメッセージが表示されます。
フォルダー構造、クラスの名前空間、クラス名はすべてpsr-4に準拠していると思いました。しかし、私は何かを誤解しているに違いありません。同様の質問をたくさん読んだことがありますが、私のためにそれを並べ替えることができた人はいません。
クラスがロードされない理由と、それを修正するために何をすべきか誰か教えてもらえますか?