标签:CI 框架 get subdircontrollername 获取 controller controllername method aUserMethods
<?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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。