2017-02-02 18 views
0

私は、シンフォニープロジェクトで使用するバニラPHPで書かれた外部リポジトリを持っていますが、 'composer require'コールはうまく動作し、すべてのファイルはベンダーディレクトリにロードされます。実行時に次のエラーが発生します。コンパイラの更新によって名前空間がオートロードされない

Attempted to load class "FM" from namespace "MyRepo1\Src\Vendors\FM". 
Did you forget a "use" statement for another namespace? 

私は、以下に含まれるPHPリポジトリのcomposer.jsonかもしれません。以下

{ 
    "name" : "myUserName/MyRepo1", 
    "minimum-stability" : "dev", 
    "repositories" : [{ 
      "type" : "git", 
      "url" : "https://github.com/myUserName/MyRepo2" 
     } 
    ], 
    "require" : { 
     "myUserName/MyRepo2" : "*", 
     "php" : "^7.0" 
    }, 
    "version" : "1.0.2", 
    "require-dev" : { 
     "phpunit/phpunit" : "5.5.*", 
     "squizlabs/php_codesniffer" : "2.*", 
     "mayflower/php-codebrowser" : "~1.1" 
    } 
} 

ディレクトリのベンダーであるFMクラス/ MYUSERNAME/MyRepo1/SRC/tracking.interfaceとtracking.classが

<?php 
namespace MyRepo1\Src\Vendors\FM; 
// : Includes 
include_once (dirname(realpath(__FILE__)) . DIRECTORY_SEPARATOR . 'tracking.interface'); 
include_once (dirname(realpath(__FILE__)) . DIRECTORY_SEPARATOR . 'tracking.class'); 
// : End 
use MyRepo1\Src\Vendors\Vendors as Vendors; 
use MyRepo1\Src\Vendors\TrackingInterface as TrackingInterface; 

class FM extends Vendors\Vendors implements TrackingInterface\TrackingInterface 
{ 

} 

同じディレクトリにあるベンダーされたすべての変更があります私はcomposer.jsonファイルを作成して、クラスが正しくcomposer updateで自動ロードされるようにする必要があります。我々は最終的にcomposer.jsonに

"autoload" : { 
    "psr-4" : { 
     "Vendors\\" : "src/" 
    } 
}, 

を追加することでこれを解決し、クラスの名前空間を変更し、あなたの名前空間が書かれたファイルが

MyRepo1\Src\Vendors\FM\FM.php; 
+0

ようこそサラ。私はあなたがまだこれで苦労しているのを見ます。以前の質問ごとに、アプリケーションのcomposer.jsonファイルを変更することをお勧めします。作業が完了したら、他のコンポーネントのcomposer.jsonファイルを見て、どのように動作するかを確認します。 – Cerad

+0

ありがとう@セラード私は、あなたが私にオススメしたすべての提案を試しました、そして、私は同じミスをまだ受けています。 –

+0

秘密の秘密でない限り、実際のリポジトリのインストールに使用した実際のコンポーザーコマンドを投稿してください。私は一見を喜んでいる。それ以外の場合は、私が提案できるのはレビューです:http://php.net/manual/en/language.namespaces.php – Cerad

答えて

0

namespace Vendors;に変更すると、ディレクトリと同じになります。

+0

私はこれを試しましたが、まだ動作していません。私もキャッシュをクリアし、 'composer dump-autoload'を実行しました –

0

に配置する必要がありますされている方法に基づいて

関連する問題