個人クラスにカスタム名前空間を使用しようとしています。
ディレクトリ構造は(いつものように):
my_project/ -src/ |-myComponent.class.php \-myWrapper.class.php -ベンダー | -OtherLibrary \-Symfony -composer.json -index.php
私のcomposer.json私は自分の名前空間を次のように指定します:
_"autoload": {
"psr-0": {
"my_namespace\\": "src/"
}
}`
_
次に、私のPHPコードでは、次のようなものがあります。
_namespace my_namespace;
class myComponent
{
.... code
}
_
_namespace my_namespace;
require_once __DIR__.'/vendor/autoload.php';
$component = new myComponent();
_
致命的なエラー:5行目の/path_to_root/my_project/index.phpにクラス 'my_namespace\myComponent'が見つかりません
myComponentがmy_project/src /の下で検索されることを期待します。 composer.jsonで指定され、vendor/composer/autoload_namespaces.php ('my_namespace\\' => array($baseDir . '/src')
)。
名前空間を自分の名前空間に定義するときは、カスタムmyComponentを直接呼び出すことを期待します。私が間違っている?
私のコードと私の仮定の何が問題になっていますか?どうすれば修正できますか?
自分でエラーを見つけましたが、Composerの便利なautoloadディレクティブの機能を簡単にまとめました:
composer.json
で指定したパスでこのファイルを見つけようとします。ファイル。クラスmyNamespace\myClass
と"psr-0":{"myNamespace\\": "src"}
はsrc/myNamespace/myClass.php
を読み込もうとします。composer.json
で指定された名前空間プレフィックスを完全なクラス名から削除し、残りをパスに変換し、最後に「.php」を追加して、指定されたパスで検索します。クラスmyNamespace\myClass
と"psr-4":{"myNamespace\\": "src"}
はsrc/myClass.php
を読み込もうとします。