2014-10-30 115 views
0

我有一個文件,它看起來像這樣:命名空間語句是否可以「包含」在PHP中?

<?php 
namespace n; 
f(); // this calls n\f() 

PHP語句可以通過使用include功能包括在內,但是,這並不爲聲明工作:

<?php 
include('example_include_namespace_statement.php') 
f(); // this doesn't call n\f() 

example_include_namespace_statement。 php:

<?php 
namespace n; 

有什麼辦法可以在PHP中「包含」命名空間聲明嗎?

或者它根本不可能嗎?

+1

不會。命名空間只覆蓋它在 – Phil 2014-10-30 00:21:00

+0

@Phil中聲明的文件,您可能想將該文件作爲回答發佈,因爲它已經過了2天,而且似乎沒有其他人有更好的答案。 – Pacerier 2014-10-31 22:14:35

回答

2

你調用一個函數,它是在一個命名空間的時候,像這樣指定命名空間:

// test.php 
namespace test; 
function doesItWork() { 
    return 'It Works!'; 
} 
// index.php 
include 'test.php'; 
echo test\doesItWork(); 

如果你想使用在一個命名空間,它是當前的命名空間之外,那麼定義的函數你必須用名稱空間字符作爲前綴,如下所示:

echo \test\doesItWork(); 

您應該閱讀documentation on namespaces

+0

我已閱讀有關命名空間的文檔。不得不在'\ namespace \'前面調用意味着命名空間語句不像我們期望從其他語句的包含中那樣「包含」。有沒有什麼辦法可以在PHP中「包含」命名空間聲明? – Pacerier 2014-10-30 00:30:43

+0

@Pacerier哦,你在考慮自動加載嗎? - 在使用時包括名稱空間,而不必手動包含它。 – 2014-10-30 00:32:54

+0

不,我正在考慮'include'。當我們包含'f();'等語句時,我們得到的'include' **行爲**自動加載是自動加載的,不包括...... – Pacerier 2014-10-30 00:34:49

相關問題