2016-09-20 17 views
0

誰かが正しい方向に向いてくれますか?私はJWTの署名と検証のライブラリであるGITプロジェクトNamshi/JOSEをダウンロードしました。私は以下のディレクトリ構造を持っています。PHP名前空間エラー。コンポーザープロジェクト内にクラスが見つかりません

directory structure

すべての私のユニットテスト(フォルダ内の完全テスト仕事なので、composer.jsonbootstrap.phpのファイルは大丈夫です。しかし、私は試してみて、私自身のテストを追加する場合、フォルダ私は名前空間がクラスにSimpleJWSを解決するために取得することはできませんしようと、これまで何を以下のようにmyTests-> simpleTest.phpに。ライブラリの名前空間はNamshi/JOSEです。私の簡単なテストを呼び出すコードがあります:

<?php 

     use Namshi\JOSE\SimpleJWS; 
     //require_once ("../src/Namshi/JOSE/SimpleJWS.php"); 

     $jws = new SimpleJWS(array(
     'alg' => 'RS256' 
     )); 

エラーテキストは、Fatal error: Class 'Namshi\JOSE\SimpleJWS' not foundです。 psr-4ステートメントは次のとおりです。

"autoload": { 
    "psr-4": { 
    "Namshi\\JOSE\\": "src/Namshi/JOSE/" 

    } 
    }, 
    "autoload-dev": { 
    "psr-4": { 
     "Namshi\\JOSE\\Test\\": "tests/Namshi/JOSE/Test/" 

    } 

ご協力いただければ幸いです。

答えて

1

オートロードに関するあなたの考えは正しいですが、あなたが述べているように、テストファイルは "myTests"の下にあります。あなたのファイルが "myTests"にある間、あなたのautoload-devは単に間違ったディレクトリ "tests/Namshi/JOSE/Test /"を指します。

"autoload-dev": { 
    "psr-4": { 
     "Namshi\\JOSE\\Test\\": "myTests" 
    } 
} 

も確認してください、あなたのテストクラスのあなたのFQCNは(完全修飾クラス名)Namshi\JOSE\Test\simpleTestです。

<?php 

namespace Namshi\JOSE\Test; 

class simpleTest {} 

、あなたのテストスイートにオートローディングを含める欠落していた以下のコメントによります。

+0

お返事ありがとうございます。しかし、私は誤解があると思う。 Namshi \\ JOSE \\ Testというエントリは、** tests **フォルダのUnit Testsを参照しています。 myTestsフォルダは別のテストセットです。 – TrueBlue

+0

申し訳ありませんが、私はそれらを混ぜました。テストでブートストラップを読み込みますか? –

+0

私はそれがその要点かもしれないと思いますが、ブートストラップをロードする方法を指定する方法がわかりません。 – TrueBlue

関連する問題