Después de crear una interfaz simple en mi nuevo módulo. Escribí bin / magento setup: di: compile, y recibo un error que dice que el nombre ya está en uso.
Aquí está mi código:
namespace Company\Test\Api;
/*
* @api
*/
interface XyzInterface {
public function getSomething();
}
Entonces me sale este error:
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
La línea es la "interfaz XyzInterface" No estoy seguro de lo que estoy haciendo mal.
Respuestas:
Hoy recibí el mismo error de tipo:
donde la línea 100 es el final del archivo.
Aproximadamente después de 4 horas de depuración, realmente encuentro la razón: un error de imprenta en la declaración del espacio de nombres. Hasta el momento final, no creía que fuera un error tipográfico en la declaración de nombres, pero cuando reescribí todos los nombres nuevamente, el error desapareció. Este artículo fue muy útil:
Gracias, Alan Storm :)
ACTUALIZAR:
Otro tipo de ese error es la declaración incorrecta del espacio de nombres con una parte faltante del espacio de nombres, como en este ejemplo:
Error:
donde la línea 109 es el final del archivo.
En el archivo
vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.php
encontramos el espacio de nombres comoMigration\Step
cuando el espacio de nombres correcto debería serMigration\Step\UrlRewrite
porque la ruta a esta clase esMigration/Step/UrlRewrite
. Después de cambiar el espacio de nombres alMigration/Step/UrlRewrite
error se ha ido.fuente