Preguntándose si alguien más ha encontrado este problema al utilizar la nueva capacidad de clases de espacio de nombres usando PHP 5.3.Espacio de nombres PHP con nombre de clase dinámico
Estoy generando una llamada de clase dinámica utilizando una clase separada para definir tipos de usuario en mi aplicación. Básicamente, el definidor de clases toma una representación entera de tipos y los interpreta, devolviendo una cadena que contiene el nombre de clase que se llamará como modelo para ese usuario.
Tengo un modelo de objeto para el tipo de usuario con ese nombre definido en el ámbito global, pero tengo otro objeto con el mismo nombre para el editor del usuario en el espacio de nombres del Editor. Por alguna razón, PHP no me permitirá hacer una llamada dinámica de espacio de nombres de la siguiente manera.
$definition = Definer::defineProfile($_SESSION['user']->UserType);
new \Editor\$definition();
La sintaxis idéntica funciona para llamar el modelo de objetos básica global en el espacio de nombres global y lo uso de esta forma de manera fiable en toda la aplicación.
$definition = Definer::defineProfile($_SESSION['user']->UserType);
new $definition();
Esto llamará correctamente a la clase dinámica deseada.
¿Hay alguna razón por la que los dos se comporten de forma diferente, o las llamadas dinámicas para los espacios de nombres no se han implementado en esta casa aún, ya que esta es una característica nueva? ¿Hay alguna otra manera de llamar dinámicamente una clase desde otro espacio de nombres sin colocar explícitamente su nombre en el código, sino desde dentro de una variable?
Yo usaría eval() para eso – yoda