2012-04-02 65 views
2

有沒有什麼辦法可以臨時使用命名空間? 我正在使用一個庫來創建窗體,它使用命名空間,問題是我通常希望在頁面中間創建窗體,因此在全局命名空間中。然後,如果我想調用這個庫我必須前綴命名空間的一切\臨時命名空間

的任何功能,這難道沒有PHP沒有辦法做這樣的事情:

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

namespace Namespace 
{ 
    test(); 
} 

More global PHP 

而且有它指的命名空間\測試?

回答

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 
?> 

這是你能得到的最接近的 - 有沒有辦法臨時更改默認的命名空間。

+0

好吧,這可能是夠好的。快速提問:我在全局命名空間中使用了一組通過自動加載器導入的類。現在,如果我在開始時聲明它們都是有用的,但是它們在被調用時仍然被加載,它會改變任何性能方面的東西嗎? – 2012-04-02 01:34:13

+0

它們將通過使用語句加載,而不是在它們被調用時加載。它不應該改變任何性能明智的,只是你的自動加載器包含的另一個文件。 – 2012-04-02 01:54:13