2014-04-10 44 views
0

我想弄清楚如何在PHP中使用名稱空間,但很難理解何時需要全局命名空間前綴。看看下面的例子:只有類需要全局命名空間前綴嗎?

的index.php

namespace MySpace; 

require_once 'file.php'; 

Test::hello(); 

hi(); 

file.php

class Test { 
    public static function hello() { 
     echo 'hello'; 
    } 
} 

function hi() { 
    echo 'hi'; 
} 

這不會工作,但寫\測試::你好(),而不是將與兩相呼應的「hello 「和」嗨「。

爲何hi()也不是\所需的?

回答

1

http://php.net/manual/en/language.namespaces.fallback.php

使用命名空間:後備全局函數/常量

在命名空間內部,當PHP遇到不合格的名稱在類 名,函數或常量方面,它解決了這些不同 優先。 類名稱始終解析爲當前名稱空間名稱。 因此訪問內部或非命名空間的用戶類,一個必須參考 將它們與自己的完全合格的名稱[...]

對於函數和常量,PHP將回落至全局函數或 常量如果名稱空間函數或常量不存在。