Codeigniter模型中的ReflectionClass


ReflectionClass in Codeigniter Model

我需要用codeigniter 2.0.2从模型验证控制器中方法的存在性。和HMVC。

我试着做ReflectionClass:hasMethod(),没有成功。

我在Model中的代码:

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

这就解决了上面的问题…

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

一些主意吗?

我不完全确定,但这可能像$rc->hasMethod("panel_base")一样简单;

变化

$rc::hasMethod("panel_base")

$rc->hasMethod("panel_base")