2012-04-02 12 views
2

Existe-t-il un moyen d'utiliser temporairement un espace de noms? J'utilise une bibliothèque pour créer des formulaires et utilise des espaces de noms, le problème est que je veux généralement créer un formulaire au milieu d'une page, qui est donc dans l'espace de noms global. Alors si je veux appeler toutes les fonctions de cette bibliothèque, je dois préfixer tout avec espace de noms \Espace de noms temporaire

N'est-il possible en PHP pour faire quelque chose comme ceci:

Blabla global namespace 
strlen('test'); // 4 

namespace Namespace 
{ 
    test(); 
} 

More global PHP 

Et avoir à se référer Namespace \ test?

Répondre

3

http://www.php.net/manual/en/language.namespaces.importing.php

<?php 
namespace foo; 
use My\Full\Classname as Another; 

// this is the same as use My\Full\NSname as NSname 
use My\Full\NSname; 

// importing a global class 
use ArrayObject; 

$obj = new namespace\Another; // instantiates object of class foo\Another 
$obj = new Another; // instantiates object of class My\Full\Classname 
NSname\subns\func(); // calls function My\Full\NSname\subns\func 
$a = new ArrayObject(array(1)); // instantiates object of class ArrayObject 
// without the "use ArrayObject" we would instantiate an object of class foo\ArrayObject 
?> 

C'est sur le point le plus proche, vous pouvez obtenir - il n'y a aucun moyen de modifier l'espace de noms par défaut temporairement.

+0

Ok, ça pourrait être assez bon. Question rapide: J'utilise un ensemble de classes dans mon espace de noms global, importé via autoloader. Maintenant, si je les déclare tous au début avec l'utilisation, mais ils sont encore chargés quand ils sont appelés, cela changera-t-il quelque chose au niveau de la performance? –

+0

ils seront chargés via les instructions d'utilisation, pas quand ils sont appelés. Cela ne devrait rien changer aux performances, juste un autre fichier inclus par votre autochargeur. –