2012-05-14 163 views
1

我對PHP比較陌生,或者更多地指定新的項目至少有點複雜並且有很多類。到目前爲止,使用require_once是可以的。然而,對於一個新項目來說,其中包含了大量的內容並不總是需要所有內容。PHP命名空間和自動加載

我創建的是一個複雜的公共Web服務(這不是我的控制)的客戶端。該客戶端將被用於應用程序。

我看着spl_autoload_register,但沒有真正讓它工作。該項目的目錄是:

webServiceClient/src/path/same/as/namespaces 

可以說類的客戶端將被使用的應用程序可以直接在

webServiceClient/src/path/same 

這個類必須「負荷」所有可能的必修課。我怎樣才能做到這一點?

+0

看PSR-0(https://gist.github.com/1234504)的提案。也許這會有所幫助。 – radmen

回答

1
  1. 創建自動加載功能
  2. 註冊點1個功能爲spl_autoload_registerlink
  3. 如果您只有__autoload作爲自動加載功能,您還沒有 註冊它。 link
  4. 寫您的自動加載功能

function __autoload($classname) {  
    $filename = ROOT."\\". $classname .".php"; //you can define ROOT by define('ROOT','dir path');  
    include_once($filename);  
} 

所以,當你聲明

$myclass = new webServiceClient\src\path\same; 

autolaod將包括ROOT.'webServiceClient\src\path\same.php'

+1

'/'不是名稱空間分隔符。有效的名稱空間分隔符是'\',我不確定您的自動加載器是否能正確處理它。 – radmen

+0

@radmen thanx剩下我.... +1 –