CI框架 获取所有方法
作者:互联网
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class ControllerList { private $CI; /** * 包含控制器名称和方法 */ private $aControllers; // Construct function __construct() { $this->CI = get_instance(); $this->setControllers(); } /** * 返回所有控制器及其方法 * @return array */ public function getControllers() { return $this->aControllers; } /** * 设置包含控制器名称和方法的数组 */ public function setControllerMethods($p_sControllerName, $p_aControllerMethods) { $this->aControllers[$p_sControllerName] = $p_aControllerMethods; } /** * 设置控制器和方法。 */ private function setControllers() { // 遍历控制器目录 foreach(glob(APPPATH . 'controllers/*') as $controller) { // 如果循环中的值是通过该目录的目录循环 if(is_dir($controller)) { // 获取目录名称 $dirname = basename($controller, EXT); // 遍历子目录 foreach(glob(APPPATH . 'controllers/'.$dirname.'/*') as $subdircontroller) { // 获取子目录的名称 $subdircontrollername = basename($subdircontroller, EXT); // 如果尚未加载控制器文件,请将该文件加载到内存中 if(!class_exists($subdircontrollername)) { $this->CI->load->file($subdircontroller); } //使用其方法将controllername添加到数组 $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"){ $controllername = basename($controller, EXT); // 如果尚未加载控制器文件,请将该文件加载到内存中 if(!class_exists($controllername)) { $this->CI->load->file($controller); } $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); } } } }
标签:CI,框架,get,subdircontrollername,获取,controller,controllername,method,aUserMethods 来源: https://www.cnblogs.com/mashou/p/12661017.html