Expansión del alias del espacio de nombre de PHP a la cadena de espacio de nombre completo

Me preguntaba si existe una forma de expandir un token de espacio de nombre PHP con alias para obtener el identificador de espacio de nombres completo. El propósito de hacerlo es que nuestra fábrica de creación de objetos espera una cadena con el espacio de nombres completo para que pueda autocargarlo. Aquí hay un ejemplo rápido:

<?php use my\namespace\area as MyArea; $goodObject = MyApp::factory('my\namespace\area\ClassName'); $badObject = MyApp::factory('MyArea\ClassName'); 

Estoy buscando alguna solución genérica para poder expandir ese alias NS en cualquier situación, con algo equivalente a:

 $desiredObject = MyApp::factory(resolve_namespace_alias('MyArea') . '\ClassName'); 

Si alguien ha abordado este tema, me encantaría saber cómo lo hizo.

No soy consciente de resolver una cadena, pero la clase de una instancia de objeto:

 use my\namespace\area as MyArea; $b = new MyArea; $c = get_class($b); echo $c; # my\namespace\area 

Esta pregunta está relacionada de alguna manera : No se puede obtener constante de la clase dinámica usando espacios de nombres .

Desde PHP 5.5 puedes usar MyArea::class ( https://wiki.php.net/rfc/class_name_scalars ).

En PHP 5.3+ puede usar AliasExpander::expand('MyArea') ( https://github.com/milo/utils#aliasexpander ).