2016-04-07 8 views
0

ファイルのルートから、コントローラの機能が存在するかどうかを確認することはルートファイルからコントローラに存在する機能または方法かどうかを確認するためにどのような方法があります。私は以下のように試しましたが、コントローラがセッションライブラリを使用してルートファイルに追加できなかったときに立ち往生しました。CodeIgniterの -

$urlArr = array_values(array_filter(explode('/', $_SERVER['PATH_INFO']))); 
$folderName = $urlArr[0]; 
$controllerName = $urlArr[1]; 
$actionName = !empty($urlArr[2]) ? $urlArr[2] : 'index'; 

include_once FCPATH."system/core/Controller.php"; 
include_once FCPATH."application/core/MY_Controller.php"; 
include_once FCPATH."application/controllers/$folderName/$controllerName.php"; 

// Here I need to check whether the function ($actionName) exists or not 

:文字列としてファイルをチェックして、関数定義の文字列が存在するかどうかをチェックするためのソリューションを提案しないでください。

何か助けていただければ幸いです。感謝:)

答えて

1

のは、あなたがindex方法とTestコントローラがあると仮定してみましょう:あなたは、通常のルーティングルールの代わりにコールバックを使用することができますPHP> = 5.3以来

を。メソッドが定義されているかどうかを確認するには、ReflectionClassを使用できます。 Testコントローラのサンプルは次のとおりです。

$route['test'] = function() 
{ 
    require_once FCPATH."system/core/Controller.php"; 
    require_once APPPATH.'controllers/Test.php'; 
    $rc = new ReflectionClass('Test'); 

    var_dump($rc->hasMethod('publicFoo')); // bool(false) 
    var_dump($rc->hasMethod('index')); // bool(true) 

    return 'Test/index'; // return your routing 
}; 
+0

ありがとうございます。できます :) –