2017-02-24 12 views
0

これは前の質問のフォローアップの質問です。ローダーを使用してコントローラーのindex()メソッドを呼び出す必要があります。これはローダーで私が思いついたものです。これは機能しますが、これが正しい方法かどうかはわかりません。私は幸運とGoogleを検索したので、強制的に求める。ローダー内のコントローラーの呼び出しメソッド

public function controller($controller) 
{ 
    $file = 'controller/' . $controller . '.php'; 
    $class = $controller; 

    if (file_exists($file)) { 
     include_once($file); 
     $controller = new $class($this->registry); 
     $controller->index(); 
    } else { 
     echo 'Controller ' . $controller . ' not found'; 
    } 
} 

は、右$コントローラのインスタンス化した後、私は、インデックスメソッドを呼び出すために、この$controller->index();を置きます。また

、機能は私がおよそis_callablecall_user_funcを読んでいますが、助けることができれば

public function controller($controller) 
{ 
    $file = 'controller/' . $controller . '.php'; 
    $class = $controller; 

    if (file_exists($file)) { 
     include_once($file); 
     $controller = new $class($this->registry); 

     if (is_callable($controller)) { 

     } 

    } else { 
     echo 'Controller ' . $controller . ' not found'; 
    } 
} 

は感謝するでしょうそれらを使用する方法について不明な点が午前呼び出し可能であるかどうかをチェックします。

答えて

-1

さて、私はこれを得て、ここで私がしたものです。

public function controller($controller) 
{ 
    $file = 'controller/' . $controller . '.php'; 
    $class = $controller; 

    if (file_exists($file)) { 
     include_once($file); 
     $controller = new $class($this->registry); 

     if (is_callable(array($controller, 'index'))) { 
      return call_user_func(array($controller, 'index')); 
     } else { 
      echo 'Function not callable'; 
     } 

    } else { 
     echo 'Controller ' . $controller . ' not found'; 
    } 
} 
関連する問題