public function actionTest()
{
$basePath = dirname(Yii::$app->BasePath);
// 所有控制器文件夹的绝对路径
$module_path = $basePath . '/backend/controllers/';
if(!is_dir($module_path)) {
return 'error';
}
$module_path .= '*Controller.php';
// 所有控制器文件的绝对路径
$allFile = glob($module_path);
$authItems = [];
foreach ($allFile as $key => $value) {
if (is_dir($value) && !file_exists($value)) {
continue;
}
// 控制器中驼峰式命名中的大写转为-小写
$files = strtolower(preg_replace('/(?<=[a-z])([A-Z])/', '-$1', basename($value, 'Controller.php')));
// 读取控制器文件内容
$file_arr = file($value);
// 逐行读取
for($i = 0, $iMax = count($file_arr); $i < $iMax; $i ++) {
// 转译html标签
$content = htmlspecialchars($file_arr[$i]);
if (!empty($content)) {
// 删除所有空格
$content = str_replace(' ','',$content);
// 整行代码长度
$length = strlen($content);
// 方法名的起始位置
$start = strpos($content, 'functionaction');
// 方法名的结束位置
$end = strpos($content, '()');
if ($start && $end && $length) {
// 方法中驼峰式命名中的大写转为-小写
$authItems[$files][] = $item = "/$files/".strtolower(preg_replace('/(?<=[a-z])([A-Z])/', '-$1', substr($content,$start+14,$end-$length)));
$time = time();
$sql = "insert ignore into jc_auth_item (`name`, `type`, `created_at`, `updated_at`) VALUES ('$item', 2, $time, $time) ;";
file_put_contents('auth_item.sql', $sql . PHP_EOL, FILE_APPEND);
}
}
}
$authItems[$files][] = $item = "/$files/*";
$sql = "insert ignore into jc_auth_item (`name`, `type`, `created_at`, `updated_at`) VALUES ('$item', 2, $time, $time) ;";
file_put_contents('auth_item.sql', $sql . PHP_EOL, FILE_APPEND);
}
var_dump($authItems);
// return $authItems;
}
Yii2 获取所有action
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 获取总条数1View层不能使用该方法否则分页就不能使用totalCount = dataProvider->get...