2013-06-21 49 views
0

我定義的數據,如低於..如何將定義的數據用作函數或類名?

define('INDEX_CONTROLLER', 'test'); 

而且我想使用類似下面..

require_once 'controllers/' . INDEX_CONTROLLER . '.php'; 
$this->controller = new INDEX_CONTROLLER(); 

我收到提示,下面..

Fatal error: Class 'INDEX_CONTROLLER' not found in /var/www/own/boot.php on line 13

回答

4

你可以設置它等於一個變量,然後調用它:

$controller = INDEX_CONTROLLER; 
$this->controller = new $controller(); 
+0

我已經是鑫卡特,是它可能不使用變量? – user2328931

+0

我不這麼認爲。你得到錯誤的原因是PHP試圖創建一個類'INDEX_CONTROLLER'。如果你想使用這個常量或者實際上有一個'INDEX_CONTROLLER'類,就沒有辦法知道。 – Schleis

2

更好地利用思考

DEFINE('INDEX_CONTROLLER', 'test'); 
$rc= new ReflectionClass(INDEX_CONTROLLER); 
$this->controller = $rc->newInstance(); 

或在一個行,如果你使用php5.4 +

$this->controller = (new ReflectionClass(INDEX_CONTROLLER))->newInstance(); 

你可以閱讀更多關於這裏的反思:http://php.net/manual/en/book.reflection.php

相關問題