Po utworzeniu prostego interfejsu w moim nowym module. Wpisałem bin / magento setup: di: compile i pojawia się błąd informujący, że nazwa jest już używana.
Oto mój kod:
namespace Company\Test\Api;
/*
* @api
*/
interface XyzInterface {
public function getSomething();
}
Wtedy pojawia się ten błąd:
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
Linia to „interfejs XyzInterface”. Nie jestem pewien, co robię źle.
Odpowiedzi:
Dzisiaj otrzymałem błąd tego samego typu:
gdzie linia 100 jest końcem pliku.
Mniej więcej po 4 godzinach debugowania naprawdę znajduję przyczynę: błędny wydruk w deklaracji przestrzeni nazw. Do ostatniej chwili nie wierzyłem, że jest to błąd typograficzny w deklaracji nazw, ale kiedy przepisałem wszystkie nazwy na nowo - błąd zniknął. Ten artykuł był bardzo pomocny:
Dziękuję, Alan Storm :)
AKTUALIZACJA:
Innym typem tego błędu jest niepoprawna deklaracja przestrzeni nazw z brakującą częścią przestrzeni nazw, jak w tym przykładzie:
Błąd:
gdzie linia 109 jest końcem pliku.
W pliku
vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.php
znaleźliśmy przestrzeń nazw tak, jakMigration\Step
powinna być poprawna przestrzeń nazw,Migration\Step\UrlRewrite
ponieważ jest to ścieżka do tej klasyMigration/Step/UrlRewrite
. Po zmianie przestrzeni nazwMigration/Step/UrlRewrite
na błąd zniknął.źródło