Мне нужно проверить существование метода в контроллере из модели с 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
Некоторая идея?