2011-08-19 24 views
48

Estoy implementando espacios de nombres en mi proyecto existente. Descubrí que puede usar la palabra clave 'usar' para importar clases en su espacio de nombres. Mi pregunta es, ¿también puedo importar todas las clases de 1 espacio de nombres a otro? Ejemplo:PHP cómo importar todas las clases desde otro espacio de nombres

namespace foo 
{ 

    class bar 
    { 

     public static $a = 'foobar'; 

    } 

} 

namespace 
{ 
    use \foo; //This doesn't work! 
    echo bar::$a; 
} 

Actualización para PHP 7+

Una nueva característica de PHP 7 se agrupa declaraciones. Esto no significa que sea tan fácil como usar 1 'declaración de uso' para todas las clases en un espacio de nombres dado, pero hace que sea un poco más fácil ...

código

Ejemplo:

<?php 
// Pre PHP 7 code 
use some\namespace\ClassA; 
use some\namespace\ClassB; 
use some\namespace\ClassC as C; 

// PHP 7+ code 
use some\namespace\{ClassA, ClassB, ClassC as C}; 
?> 

Ver también: https://secure.php.net/manual/en/migration70.new-features.php#migration70.new-features.group-use-declarations

+1

Ten en cuenta que "importación" no significa que en realidad se puede encontrar esa clase. Aún necesita tener esa clase disponible a través de una solicitud manual o un autocargador. – Nanne

+1

Por supuesto, pero no sé cómo decirlo en otras palabras. – Rob

+0

Pensé que sí, pero para evitar confusiones :) – Nanne

Respuesta

53

Esto no es posible en PHP.

Todo lo que se puede hacer es:

namespace Foo; 

use Bar; 

$obj = new Bar\SomeClassFromBar(); 
+7

Ok, gracias, lástima ... – Rob

+2

O, por supuesto, puedes poner clases concretas en el uso de clausule. ('use Bar \ SomeClassFromBar; $ obj = new SomeClassFromBar();') –

+8

Oh no por qué PHP no proporciona esto ... –

Cuestiones relacionadas