2016-04-14 26 views
0

私はとしての機能を持っている:PHP:変数名としてクラス名を使用して

public function controller_instance($controller_name) 
{ 
     $controller = Router::getRequestedController(); 
     return $controller instanceof $controller_name; 

} 

と私はcontroller_instance('IndexController')としての機能を呼び出します。

変数$controller_nameには文字列IndexControllerが含まれているため、常にfalseが返されます。

どうすればこの作品を作成できますか?

+0

を使用して:: getRequestedController() 'return? –

答えて

2

ちょうどあなたがインスタンスまたはブール値を期待していることをコントローラ列

return $controller instanceof (new $controller_name()); 
0

から新しいクラスを作りますか?

方法controller_instanceが含まれており、すべてのインスタンス

private $controllers = array(); 

public function controller_instance($controller_name) 
{ 
    if (isset($this->controllers[$controller_name])) { 
     return $this->controllers[$controller_name]; 
    } 
    return $this->controllers[$controller_name] = new $controller_name(); 
} 

Exemple 2を格納し、同じクラスの配列プロパティを作成します: `ルーターを何ReflectionClassと引数

private $controllers = array(); 

public function controller_instance($controller_name, Array $args = array()) 
{ 
    if (isset($this->controllers[$controller_name])) { 
     return $this->controllers[$controller_name]; 
    } 

    $class = new ReflectionClass($controller_name); 

    $instance = $class->newInstanceArgs($args); 

    return $this->controllers[$controller_name] = $instance; 
} 
関連する問題