获得项目的所有控制器和方法下面的方法

    public function index(){
        $modules = array('Admin');  //模块名称 
        $i = 0;
        foreach ($modules as $module) {
            $all_controller = $this->getController($module);
            foreach ($all_controller as $controller) {
                $controller_name = $controller;
                $all_action = $this->getAction($module,$controller_name);
                foreach ($all_action as $action) {
                    $data[$i]['module'] = $module;
                    $data[$i]['controller'] = $controller;
                    $data[$i]['action'] = $action;
                    $i++; 
                }
            }
            } 
            echo '<pre>';
            var_dump($data);

        }



    
    //获取所有控制器名称
    protected function getController($module){
        if(empty($module))
            return null;
        $module_path=APP_PATH.'/'.$module.'/Controller/';//控制器路径
        if(!is_dir($module_path)) return null;
        $module_path.='/*.class.php';
        $ary_files=glob($module_path);
        foreach($ary_files as $file)
        {
            if(is_dir($file)){
                continue;
            }else{
                $files[]=basename($file,C('DEFAULT_C_LAYER').'.class.php');
            }
        }
        return $files;
    }
    /**
     * @cc 获取所有方法名称
     *
     * @param $module
     * @param $controller
     *
     * @return array|null
     */
    protected function getAction($module, $controller){
        if(empty($controller)) return null;
        $content = file_get_contents(APP_PATH .$module.'/Controller/'.$controller.'Controller.class.php');
        preg_match_all("/.*?public.*?function(.*?)\(.*?\)/i", $content,$matches);
        $functions=$matches[1];
        //排除部分方法
        $inherents_functions = array('_before_index','_after_index','_initialize','__construct','getActionName','isAjax','display','show','fetch','buildHtml','assign','__set','get','__get','__isset','__call','error','success','ajaxReturn','redirect','__destruct','_empty');
        foreach ($functions as $func){
            $func=trim($func);
            if(!in_array($func,$inherents_functions)){
                if(strlen($func)>0) $customer_functions[]=$func;
            }
        }
        return $customer_functions;
    }
    




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值