En mi máquina de desarrollo local (PHP 5.3.14) Puedo utilizar una clase como esta:PHP error grave inusual con "nombre ya está en uso"
<?php
namespace Shop\Repository;
use Shop\Entity\Day;
use Doctrine\ORM\EntityRepository;
class Product extends EntityRepository
{
// Code
}
La clase se almacena en/mi/src /Shop/Repository/Product.php (compatible con PSR-0). Tengo también a Shop\Repository\Day
ubicado en /my/src/Shop/Repository/Day.php.
Sin embargo, en mi servidor de ensayo (PHP 5.3.10) me sale el siguiente error:
PHP Fatal error: Cannot use Shop\Entity\Day as Day because the name is already in use in /my/src/Shop/Repository/Product.php on line 5
puedo entender el mensaje, si alias de mi tienda de importación \ Entidad \ Día a DayEntity, el código trabajos. Pero no puedo entender la causa del error fatal: ¿por qué funciona esto en php 5.3.14 (o al menos, con mi configuración) y no con 5.3.10 (o al menos, con la configuración del servidor)?
Supongo que el problema se debe a que en el espacio de nombres Shop\Repository
ya hay un Day
cargado. ¡Pero esto nunca condujo a errores en mi configuración! ¿Que esta pasando?
'use Shop \ Entity \ Day como EntityDay;', o simplemente refiérase a él con su nombre completamente calificado y deshágase de la declaración 'use' por completo. Quizás vuelva a leer [esto] (http://www.php.net/manual/en/language.namespaces.importing.php) también. – DaveRandom
Es obvio que obtendrá una colisión si importa una clase llamada Día a un espacio de nombres que ya tiene una clase llamada Día. En cuanto a por qué funciona en su configuración local; No puedo ver ninguna corrección de errores en el registro de cambios relacionado con los espacios de nombres entre 5.4.10 y 5.3.14. ¿Es posible que tu clase Repository \ Day no se haya utilizado localmente en el momento de cargar Entity \ Day? – Leigh
@Leigh Estoy solicitando exactamente la misma página, con exactamente los mismos clones de git. Esto debe ser un problema de configuración (php) por lo tanto. –