PHP-RFC: Importar namespaces de funciones

Posted by victor on July 21st, 2013
php-logoEl pasado Junio, Igor Wiedler, desarrollador muy activo del proyecto Silex, propuso un interesante RFC -Importing namespaced functions- para mejorar la forma en la que se trabaja con funciones envueltas en namespaces y equipararla a las facilidades que existen para importar namespaces de clases, interfaces y traits. Desde que en PHP >=5.3 aparecieran los namespaces, el operador use se ha utilizado para importar namespaces y hacer más cortas las referencias a las clases. Además de las clases, las funciones pueden organizarse en namespaces de la siguiente manera:
namespace Yosymfony\funciones {
    function nop() {
        return 'nop';
    }

    function refNop() {
        /**
         * Solo las funciones dentro de un mismo namespace se
         * pueden llamar sin el nombre cualificado
         */
        return nop();
    }
}
El problema surge cuando se intenta invocar las funciones desde otro namespace, por ejemplo, el global:
use Yosymfony\Funciones as Helper; // Importamos el namespace

namespace {
    Helper\nop();  // ...pero no es igual que con clases
}
Aunque importemos el namespace, siempre está presente al hacer referencia a la función mediante el alias 'Helper'. Lo ideal sería importar el espacio de nombre y usar la función sin ningún tipo de alias. Para ello, el RFC propone crear un nuevo operador denominado use function que permitirá importar namespaces de funciones sin realizar un sobrecarga sobre el actual use. Además, la inclusión de este nuevo operador evitaría el fallback de funciones, de manera que si una función no se puede resolver en el namespace actual, no intente buscarla en el global. Sin duda, de aprobarse este RFC, hay que tener paciencia pues se encuentra en estado de draft y estos procesos pueden ser muy lentos, muchas librerías y pequeños proyectos se beneficiarían de esta nueva característica del lenguaje.

Comments

comments powered by Disqus