2011-09-18 46 views
0

我需要使用codeigniter 2.0.2從模型中驗證控制器中是否存在方法。和HMVC。Codeigniter模型中的ReflectionClass

我正在嘗試使用ReflectionClass:hasMethod(),但沒有成功。

我的代碼在型號:

function hasPanel($controller){ 
    $rc = new ReflectionClass($controller); 
    if($rc::hasMethod("panel_base")){ 
     return true; 
    } 
    return false; 
} 

而不受歡迎的錯誤:

Fatal error: Uncaught exception 'ReflectionException' with message 'Class administracion does not exist' in D:\xampp\htdocs\sea\application\models\auth\permisos.php:368 
Stack trace: 
#0 D:\xampp\htdocs\sea\application\models\auth\permisos.php(368): ReflectionClass->__construct('administracion') 
#1 D:\xampp\htdocs\sea\application\models\auth\permisos.php(357): Permisos->hasPanel('administracion') 
#2 D:\xampp\htdocs\sea\application\controllers\auth\identificar.php(101): Permisos->getControladores('administracion') 
#3 [internal function]: Identificar->modulo() 
#4 D:\xampp\htdocs\sea\application\core\Admin_controller.php(317): call_user_func_array(Array, Array) 
#5 D:\xampp\htdocs\sea\system\core\CodeIgniter.php(305): Admin_controller->_remap('modulo', Array) 
#6 D:\xampp\htdocs\sea\www\index.php(252): require_once('D:\xampp\htdocs...') 
#7 {main} 
    thrown in D:\xampp\htdocs\sea\application\models\auth\permisos.php on line 368 

EDITED 這解決了上面......

function hasPanel($controller,$route){ 
    include_once($route); 
    $rc = new ReflectionClass($controller); 
    if($rc::hasMethod("panel_base")){ 
     return true; 
    } 
    return false; 
} 

但導致此:

Fatal error: Non-static method ReflectionClass::hasMethod() cannot be called statically, assuming $this from incompatible context in D:\xampp\htdocs\sea\application\models\auth\permisos.php on line 373 

有些想法嗎?

回答

1

我不完全確定,但這可能與$rc->hasMethod("panel_base")一樣簡單;你確實實例化了一個新類。 。 。

1

變化

$rc::hasMethod("panel_base") 

$rc->hasMethod("panel_base")