ReflectionClass в модели Codeigniter - PullRequest
0 голосов
/ 18 сентября 2011

Мне нужно проверить существование метода в контроллере из модели с codeigniter 2.0.2. и HMVC.

Я пытаюсь сделать с 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

Есть идеи?

Ответы [ 2 ]

1 голос
/ 19 сентября 2011

Изменить

$rc::hasMethod("panel_base")

на

$rc->hasMethod("panel_base")
1 голос
/ 19 сентября 2011

Я не совсем уверен, но это может быть так просто, как $rc->hasMethod("panel_base");Вы создали новый класс.,.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...