本文介绍了Codeigniter模型中的ReflectionClass的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从带有Codeigniter 2.0.2的模型中验证控制器中是否存在方法。和HMVC。

I need to verify the existence of a method in a controller from a model with codeigniter 2.0.2. and HMVC.

我正在尝试使用 ReflectionClass:hasMethod(),但没有成功。

I'm trying to do with ReflectionClass:hasMethod(), without success.

我在模型中的代码:

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

已编辑
这可以解决上述问题...

EDITEDThis solves the above...

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);您确实实例化了一个新课程。 。

I'm not entirely sure, but this might be as simple as $rc->hasMethod("panel_base"); You did instantiate a new class. . .

这篇关于Codeigniter模型中的ReflectionClass的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-19 13:17