2012-01-20 26 views
2

我正在做關於php5的第一次測試。更具體地說,我試圖使用命名空間,但似乎PHP不解決命名空間。這裏測試我做過:如何解決在PHP上的命名空間?

文件1:test.php的

<? 
namespace \first_test; 

class Test { 
    function test_function(){ 
     print "works"; 
    } 
} 
?> 

文件2:use_namespace.php

<? 
use \first_test; 


$a=new \first_test\Test(); 
$a->test_function(); 
?> 

我得到一個致命的錯誤: 致命錯誤:類' first_test \ Test'未在 here_the_path_where use_namespace.php中找到。

任何幫助表示讚賞。

P.S.這兩個文件都在同一個目錄下,在windows 5.3.9上。

+2

不應該包含該文件嗎? – dynamic

+0

@ yes123,閱讀下面的評論。在那裏我評論爲什麼我猜 我沒有包含該文件。 – xtarafa

回答

2

聲明命名空間時,您不需要\,你只能從它調用函數時需要它。

<?php 
    namespace first_test; 

    // ... 
?> 

而且,在你的第二文件,你需要include test.php,否則不知道什麼first_test是。

+0

另外,如果您'使用first_test;'你可以實例化類沒有命名空間:'$ A =新的測試;' – Alfwed

+1

嗨@Rocket。正如我所說這是一個測試。目標是使用使用命名空間的第三方庫。由於它沒有工作,我創建了一個小集測試。據我所知,我不包括test.php,用**使用**導入應該足夠了。事實上,在圖書館裏,有幾個文件,沒有人包含任何其他人,只聲明名稱空間並通過使用**關鍵字導入它們。所以我想可能是與PHP配置相關的東西,它不允許檢測命名空間?我已經檢查過include_path的值以及包含這些phps的目錄。任何想法?謝謝。 – xtarafa

+0

@xtarafa:我真的不知道名稱空間是如何工作的,這只是我能想到的第一件事。 –