私は、シンフォニープロジェクトで使用するバニラ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;
ようこそサラ。私はあなたがまだこれで苦労しているのを見ます。以前の質問ごとに、アプリケーションのcomposer.jsonファイルを変更することをお勧めします。作業が完了したら、他のコンポーネントのcomposer.jsonファイルを見て、どのように動作するかを確認します。 – Cerad
ありがとう@セラード私は、あなたが私にオススメしたすべての提案を試しました、そして、私は同じミスをまだ受けています。 –
秘密の秘密でない限り、実際のリポジトリのインストールに使用した実際のコンポーザーコマンドを投稿してください。私は一見を喜んでいる。それ以外の場合は、私が提案できるのはレビューです:http://php.net/manual/en/language.namespaces.php – Cerad