Table of Contents
ThinkPHP 3.2 中获取所有函数方法名,以及注释,完整可运行,thinkphp3.2
Jun 13, 2016 am 09:16 AM
thinkphp
ThinkPHP 3.2 中获取所有函数方法名,以及注释,完整可运行,thinkphp3.2
<?php namespace Home\Controller; use Common\Controller\BaseController; class AuthController extends BaseController{ /** * @cc index主页面 */ public function index(){ $modules = array('Home'); //模块名称 $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] = array( 'name' =>$module.'/'. $controller . '/' . $action, 'status' => 1, 'desc'=>$this->get_cc_desc($module,$controller,$action) ); $i++; } } } echo '<pre class="brush:php;toolbar:false">'; print_r($data); } /** * @cc 获取所有控制器名称 * * @param $module * * @return array|null */ 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(<span>'_before_index'<span>,<span>'_after_index'<span>,</span></span></span></span>'_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; } /** * @cc 获取函数的注释 * * @param $module Home * @param $controller Auth * @param $action index * * @return string 注释 * */ protected function get_cc_desc($module,$controller,$action){ $desc=$module.'\Controller\\'.$controller.'Controller'; $func = new \ReflectionMethod(new $desc(),$action); $tmp = $func->getDocComment(); $flag = preg_match_all('/@cc(.*?)\n/',$tmp,$tmp); $tmp = trim($tmp[1][0]); $tmp = $tmp !='' ? $tmp:'无'; return $tmp; } }
Copy after login
其中注释必须采用固定格式,
<span>/*</span><span>* * @cc index主页面 </span><span>*/</span>
Copy after login
适用于ThinkPHP 3.2.2 ,适合用auth 认证时,直接提取所有的控制器及方法名,可以获取注释。非常方便。
参考:
1、http://www.thinkphp.cn/code/718.html
2、http://www.thinkphp.cn/topic/10357.html
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article
Repo: How To Revive Teammates
3 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌
How Long Does It Take To Beat Split Fiction?
3 weeks ago
By DDD
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌

Hot tools Tags

Hot Article
Repo: How To Revive Teammates
3 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌
How Long Does It Take To Beat Split Fiction?
3 weeks ago
By DDD
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

There are several versions of thinkphp

Which one is better, laravel or thinkphp?

Development suggestions: How to use the ThinkPHP framework to implement asynchronous tasks

ThinkPHP6 data encryption and decryption: protecting sensitive data security

ThinkPHP6 backend management system development: realizing backend functions
