依存関係の管理に composer を使い始めたばかりで、自動ロードのために psr-4 に準拠していない理由を理解するのに苦労しているので、アドバイスを求めてここにいます。既に packagist にあるランダムな値を生成するクラスがあります。プロジェクトの構造は次のとおりです (composer.json ファイルに A と B というラベルを付けました)。
プロジェクトディレクトリ
|classfile.php
A |composer.json
|vendor
|autoload.php
|ejfrancis
|php-random-value
B |composer.json
|RandomValue.php <--the class I want autoloaded
composer.json A
{
"require": {
"ejfrancis/php-random-value": "dev-master"
}
}
composer.json B
{
"name": "ejfrancis/php-random-value",
"description": "Secure random value generator.",
"require": {
"php": ">=5.3.0"
},
"license": "MIT",
"autoload": {
"psr-4": {
"ejfrancis\\" : ""
}
}
}
最後に ejfrancis 名前空間を宣言する RandomValue.php ファイル
namespace ejfrancis;
class RandomValue{
//foo
}
アプリを実行すると、「クラス RandomValue が見つかりません」というエラーが表示されるため、正しく自動ロードされません。私はpsr-4に準拠していませんか、それとも他に何か間違っていますか? また、作曲家のクラスマップを使用してオートロードを試みました"classmap" : ["RandomValue.php"]
が、成功しませんでした。助けてくれてありがとう
更新: composer.json B ファイルで「composer validate」を実行しましたが、間違いなく有効です。