2014-02-24 92 views
2

我有下面的PHP代碼:PHP命名空間和包含文件

<?php 
namespace my_ns; 

class dummy 
{ 

function do_print(){echo "printing...";}  
} 

$obj_dummy=new dummy(); 
$obj_dummy->do_print(); 
?> 

這工作都很好,

如何以往如果我把這個類在一個單獨的包含文件(如class.dummy.php ),使得網頁上的代碼看起來象下面這樣:

<?php 
namespace my_ns; 
include ("class.dummy.php"); 
$obj_dummy=new dummy(); 
$obj_dummy->do_print(); 
?> 

我得到的錯誤信息:

類「my_ns \假人」沒有......

如何在默認情況下確保(全部)包括,文件將被自動添加到給定命名空間中?

+1

是否'class.dummy.php'文件有'命名空間my_ns;'在這行? –

+0

另一個檢查是如果'$ obj_dummy = new \ dummy();'按預期工作。如果是這樣,你的班級在全局命名空間。 – naththedeveloper

+0

此代碼*應該*按原樣工作。 – deceze

回答

2

包含名稱空間的文件必須在任何其他代碼之前聲明文件頂部的名稱空間 - 有一個例外:declare關鍵字。

Source

添加到您的包含文件,以及。

namespace my_ns; 

之後,你的代碼工作得很好。

Reference