Hoy recibí el mismo error de tipo:
Error fatal de PHP: no se puede declarar la clase Class \ Name \ Here, porque el nombre ya está en uso en /var/www/m2/magento2/app/code/path/to/the/class.php en la línea 100
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:
Me rascaré la cabeza por un tiempo, me preguntaré qué está pasando y eventualmente me daré cuenta de que es esto
Pulsetorm
es decir, he escrito mal un nombre de espacio de nombres, y cuando las cargas automáticas iniciales cargan el archivo de clase, no habrá definido la clase que está buscando, y luego un segundo cargador automático (el del Compositor usualmente) lo carga nuevamente e intenta redefinir el mismo clase incorrecta
es decir, Magento quería la clase
Pulsestorm\Helloworld\Observers\Block
pero definí
Pulsetorm\Helloworld\Observers\Block
Gracias al espacio de nombres incorrecto.
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:
Generación de código de repositorios ... 1/7 [====> -----------------------] 14% 1 seg 50.0 MiBPHP Error fatal: No se puede declarar class Migration \ Step \ Version11410to2000Test, porque el nombre ya está en uso en /var/www/vhosts/rwld/vendor/magento/data-migration-tool/tests/unit/testsuite/Migration/Step/UrlRewrite/Version11410to2000Test.php en línea 109
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 como Migration\Step
cuando el espacio de nombres correcto debería ser Migration\Step\UrlRewrite
porque la ruta a esta clase es Migration/Step/UrlRewrite
. Después de cambiar el espacio de nombres al Migration/Step/UrlRewrite
error se ha ido.