Nach dem Erstellen einer einfachen Schnittstelle in meinem neuen Modul. Ich habe bin / magento setup: di: compile eingegeben und erhalte die Fehlermeldung, dass der Name bereits verwendet wird.
Hier ist mein Code:
namespace Company\Test\Api;
/*
* @api
*/
interface XyzInterface {
public function getSomething();
}
Dann bekomme ich diesen Fehler:
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
Die Zeile ist die "Schnittstelle XyzInterface". Ich bin nicht sicher, was ich falsch mache.
Antworten:
Heute habe ich den gleichen Fehler erhalten:
Dabei steht die Zeile 100 am Ende der Datei.
Ungefähr nach 4 Stunden Debugging finde ich wirklich den Grund: einen Druckfehler in der Namespace-Deklaration. Bis zum letzten Moment habe ich nicht geglaubt, dass es sich um einen Tippfehler bei der Namenserklärung handelt, aber wenn ich alle Namen neu geschrieben habe, ist der Fehler verschwunden. Dieser Artikel war sehr hilfreich:
Vielen Dank, Alan Storm :)
AKTUALISIEREN:
Ein anderer Typ dieses Fehlers ist eine falsche Namespace-Deklaration mit fehlendem Teil des Namespace, wie in diesem Beispiel:
Error:
wobei die Zeile 109 das Ende der Datei ist.
In der Datei haben
vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.php
wir den Namespace so gefunden, wieMigration\Step
der richtige Namespace sein sollte,Migration\Step\UrlRewrite
da der Pfad zu dieser Klasse lautetMigration/Step/UrlRewrite
. Nach dem Ändern des Namespace istMigration/Step/UrlRewrite
der Fehler weg.quelle