Obtenga todos los nombres de FUNCIONES de todos los CONTROLADORES en Codeigniter

Hola, estoy tratando de obtener todos los nombres de FUNCIONES de todos los CONTROLADORES en Codeigniter. Bueno, puedo obtener todos los nombres de CONTROLADORES en la matriz pero no puedo obtener todas las funciones de todos los controladores. Solo obtengo nombres de funciones del controlador actual en el que estoy escribiendo la función.

Estoy buscando nombres de funciones por $class_methods=get_class_methods(new classname());

Si lo probé globalmente obtengo un error de directorio.

Para obtener una lista de todos los controladores con su método, use esta biblioteca:

 load->library('controllerlist'); * print_r($this->controllerlist->getControllers()); * * @author Peter Prins */ class ControllerList { /** * Codeigniter reference */ private $CI; /** * Array that will hold the controller names and methods */ private $aControllers; // Construct function __construct() { // Get Codeigniter instance $this->CI = get_instance(); // Get all controllers $this->setControllers(); } /** * Return all controllers and their methods * @return array */ public function getControllers() { return $this->aControllers; } /** * Set the array holding the controller name and methods */ public function setControllerMethods($p_sControllerName, $p_aControllerMethods) { $this->aControllers[$p_sControllerName] = $p_aControllerMethods; } /** * Search and set controller and methods. */ private function setControllers() { // Loop through the controller directory foreach(glob(APPPATH . 'controllers/*') as $controller) { // if the value in the loop is a directory loop through that directory if(is_dir($controller)) { // Get name of directory $dirname = basename($controller, EXT); // Loop through the subdirectory foreach(glob(APPPATH . 'controllers/'.$dirname.'/*') as $subdircontroller) { // Get the name of the subdir $subdircontrollername = basename($subdircontroller, EXT); // Load the controller file in memory if it's not load already if(!class_exists($subdircontrollername)) { $this->CI->load->file($subdircontroller); } // Add the controllername to the array with its methods $aMethods = get_class_methods($subdircontrollername); $aUserMethods = array(); foreach($aMethods as $method) { if($method != '__construct' && $method != 'get_instance' && $method != $subdircontrollername) { $aUserMethods[] = $method; } } $this->setControllerMethods($subdircontrollername, $aUserMethods); } } else if(pathinfo($controller, PATHINFO_EXTENSION) == "php"){ // value is no directory get controller name $controllername = basename($controller, EXT); // Load the class in memory (if it's not loaded already) if(!class_exists($controllername)) { $this->CI->load->file($controller); } // Add controller and methods to the array $aMethods = get_class_methods($controllername); $aUserMethods = array(); if(is_array($aMethods)){ foreach($aMethods as $method) { if($method != '__construct' && $method != 'get_instance' && $method != $controllername) { $aUserMethods[] = $method; } } } $this->setControllerMethods($controllername, $aUserMethods); } } } } // EOF 

Guárdalo en la carpeta de la biblioteca

Que cargue esta librería en su controlador

 $this->load->library('controllerlist'); print_r($this->controllerlist->getControllers()); 

Ahora obtendrás toda la lista de controladores con su método.

Si tienes alguna pregunta por favor pregúntame.