После создания простого интерфейса в моем новом модуле. Я набрал в 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" Я не уверен, что я делаю неправильно.
Ответы:
Сегодня я получил ошибку того же типа:
где строка 100 является концом файла.
Примерно после 4 часов отладки я действительно нахожу причину: опечатка в объявлении пространства имен. До последнего момента я не верил, что это опечатка в объявлении имен, но когда я переписал все имена заново - ошибка исчезла. Эта статья была очень полезна:
Спасибо, Алан Сторм :)
ОБНОВИТЬ:
Другой тип этой ошибки - неправильное объявление пространства имен с отсутствующей частью пространства имен, как в этом примере:
Ошибка:
где строка 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
ошибка исчезла.источник