名前がすでに使用されているため、インターフェイスを宣言できません


12

新しいモジュールでシンプルなインターフェースを作成した後。bin / magento setup:di:compileと入力すると、その名前は既に使用されているというエラーが表示されます。

これが私のコードです:

namespace Company\Test\Api;

/*
 *  @api
 */
interface XyzInterface {
    public function getSomething();
}

それから私はこのエラーを受け取ります:

Repositories code generation... 1/7 [====>-----------------------]  14% 2 secs 52.0 MiBPHP 
Fatal error:  Cannot declare interface Company\Test\Api\XyzInterface, because the name is already in use in .../app/code/Company/Test/Api/XyzInterface.php on line 13

行は「インターフェイスXyzInterface」です。何が問題なのかわかりません。


1
スタックトレースを表示するには、-vvvオプションを指定してコマンドを実行してください。何らかの理由でファイルが2回含まれている可能性があります。
BuskaMuza

「PHPの致命的なエラー」を示しているだけ
ネリー

xdebugを有効にすることもできます。バックトレースの表示に役立つと思います。
BuskaMuza

1
「名前空間」クラスのタイプミスのためにもこのエラーが発生しました
Ansyori

回答:


35

今日私は同じタイプのエラーを受け取りました:

PHPの致命的なエラー:クラスClass \ Name \ Hereを宣言できません。名前が/var/www/m2/magento2/app/code/path/to/the/class.phpの100行目ですでに使用されています

ここで、100行目はファイルの終わりです。

約4時間のデバッグの後、私は本当にその理由を見つけました。名前空間宣言の誤植です。最後の瞬間まで、名前の宣言の誤植だとは思わなかったが、すべての名前を書き直したところ、間違いはなくなった。この記事は非常に役に立ちました:

しばらく頭をかいて、何が起こっているのだろうと思って、結局これだと気づく

Pulsetorm

つまり、名前空間の名前を誤って入力したため、最初のオートロードがクラスファイルをロードするときに、探しているクラスが定義されていないため、2番目のオートローダー(通常はComposerがロードします)が再度ロードし、同じものを再定義しようとします。正しくないクラス。

つまり、Magentoはクラスを求めていました

Pulsestorm\Helloworld\Observers\Block

しかし私は定義しました

Pulsetorm\Helloworld\Observers\Block

間違った名前空間のおかげです。

ありがとう、アラン・ストーム:)

更新:

このエラーの別のタイプは、次の例のように、名前空間の一部が欠落している誤った名前空間宣言です。

エラー:

リポジトリコード生成... 1/7 [====> -----------------------] 14%1秒50.0 MiBPHP致命的エラー:宣言できません名前が/var/www/vhosts/rwld/vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.php onですでに使用されているため、Migration \ Step \ Version11410to2000Testクラス行109

ここで、109行目はファイルの終わりです。

ファイルvendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.phpでは、このクラスへのパスMigration\StepがであるMigration\Step\UrlRewriteため、正しい名前空間が存在するはずのように名前空間が見つかりましたMigration/Step/UrlRewrite。ネームスペースをMigration/Step/UrlRewriteエラーに変更すると消えます。


1
私は同じ問題を抱えていました、これはクレイジーな問題です
Hamza Alayed 16/12/23

名前空間の問題の+1。2時間も無駄にした。どうもありがとう!
wezzy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.