4

依存関係の管理に 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」を実行しましたが、間違いなく有効です。

4

1 に答える 1

12

コンポーザーをコンポーザーに変更してコンポーザーを"Namespace\\"行うdump-autoload -o

于 2014-06-24T17:59:58.083 に答える