zoukankan      html  css  js  c++  java
  • php框架 生成ACL

    用php框架开发中,经常要用到acl, 手动一个一个录入控制器,动作,描述 到数据库太麻烦..

    以下代码,复制到测试控制器上, 前提是你的函数名都是规范的phpdoc格式, 如下格式:
     1     /**
     2      * 生成acl
     3      */
     4     function makeAcl(){
     5         $controller = dirname(__FILE__);
     6         $aclData = array();
     7         $needAuth = array('member', 'test'); //需要添加到数据库里的,白名单模式
     8         spClass('m_acl')->runSql('TRUNCATE TABLE  `cym_acl`');
     9         foreach(glob($controller . "\*.php") as $v){
    10             $current = file_get_contents($v);
    11             preg_match_all('/[\{\}]\s+\/\*\*\s+\*\s(.+)[\s\S]+?function (\w+)\(.*\)/', $current, $out);
    12             preg_match('/\/\*\*\s+\*\s(.+)[\s\S]+?class (\w+) /', $current, $out1);
    13             if(count($out) === 3 && count($out1) === 3){
    14                 $contrl = $out1[2];
    15                 $aclData[$contrl]['describe'] = $out1[1];
    16                 //创建控制器pid=0
    17                 $id = in_array($contrl, $needAuth) ? spClass('m_acl')->create(array('visit' => $contrl, 'describe' => $out1[1], 'pid' => 0)) : 0;
    18                 for($i = 0; $i < count($out[1]); $i++){
    19                     $aclData[$contrl][] = array('describe' => $out[1][$i], 'action' => $out[2][$i]);
    20                     //创建动作
    21                     if($id > 0){
    22                         spClass('m_acl')->create(array('visit' => $out[2][$i], 'describe' => $out[1][$i], 'pid' => $id));
    23                     }
    24                 }
    25             }
    26         }
    27         dump($aclData);
    28         exit;
    29     }
    
    

    对于动作名的控制器名都加了suffix的,只要手工改改循环体就好了,注strstr第三个函数要php 5.2以上版本才行!

    生成的是数组.

    
    
  • 相关阅读:
    C# 解析json
    Java环境配置
    Wpf学习(五) 数据绑定Binding【小达原创】
    WPF学习(四) 样式 【小达原创】
    jQuery-- 格式化时间
    leetcode -- Nim Game
    Git 学习笔记--拉取远程分支到本地
    Git 学习笔记--删除错误提交的commit
    iOS开发-- 开发中遇到的问题汇总
    Javascript--数组转换成字符串
  • 原文地址:https://www.cnblogs.com/wc1217/p/2732828.html
Copyright © 2011-2022 走看看