2016-01-27 27 views
0

所以,我正在自己的mvc結構下開發一個webapp,並且所有的Controller類都在它們自己的文件中定義,例如:HomeController在HomeController.php中定義。所以我的問題是:是否可以根據文件名自動定義類?就像我試圖用FILE來捕捉文件名,然後根據它來定義一個類。在PHP中定義基於變量的類

$path = __FILE__; // "C:.../app/Controller/HomeController.php" 

$array = explode(DIRECTORY_SEPARATOR, $path); 
array_pop($array); // In order to remove "HomeController.php" 
$class = end($array); // Controller 

$className = 'Home'.$class; 
class $className {} // This is not working, so is it possible or not? 
+0

爲什麼你需要這個?這只是每個文件中的額外代碼行! –

+1

你想在這裏解決什麼實際問題? – David

+0

實際上,我會像使用函數一樣使用它,因爲這個應用程序需要很多控制器,模型,視圖,如果我需要更改一個文件的名稱,我還應該更改內部的類名,這樣它會更實用,我想嘿嘿 – rolivares93

回答

0

簡答:沒有。

長答案:你不能按照你想要的方式去做。你可以做的是創建代碼來創建PHP文件並從模板生成樣板類。

+0

好的,非常感謝!我會嘗試創建這些樣板 – rolivares93

0

它是通過臭名昭著的PHP函數eval()可能:

$className = 'Home'.$class; 
eval("class $className {}"); 

但它不是你的目的實用。

測試工具使用此方法創建模擬對象。 PHPUnit's Mock Object library,例如,uses it很多。