Depois de criar uma interface simples no meu novo módulo. Digitei bin / magento setup: di: compile e recebo um erro dizendo que o nome já está em uso.
Aqui está o meu código:
namespace Company\Test\Api;
/*
* @api
*/
interface XyzInterface {
public function getSomething();
}
Então eu recebo este erro:
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
A linha é a "interface XyzInterface". Não tenho certeza do que estou fazendo de errado.
Respostas:
Hoje recebi o mesmo erro de tipo:
onde a linha 100 é final do arquivo.
Aproximadamente após 4 horas de depuração, eu realmente acho o motivo: uma impressão incorreta na declaração do namespace. Até o momento final, eu não acreditava que se tratasse de um erro tipográfico na declaração de nomes, mas quando reescrevi todos os nomes novamente - o erro desapareceu. Este artigo foi muito útil:
Obrigado, Alan Storm :)
ATUALIZAR:
Outro tipo desse erro é a declaração incorreta do Namespace com parte faltante do namespace, como neste exemplo:
Erro:
onde a linha 109 é final do arquivo.
No arquivo
vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.php
, encontramos o espaço para nome comoMigration\Step
quando deveria estar o espaço para nome correto,Migration\Step\UrlRewrite
pois é o caminho para essa classeMigration/Step/UrlRewrite
. Após a alteração do espaço para nome,Migration/Step/UrlRewrite
o erro desapareceu.fonte