zoukankan      html  css  js  c++  java
  • 将一个驼峰式的字符串转化为在大写字母前用某种字符填充并将大写字母变成小写

            在进行thinkphp开发的时候,有一种开发思想就是:

    一个控制器对应一个数据表的管理,控制器的命名采用驼峰式命名,

    数据表采用每个单词之间下划线连接 。

    举个例子:有一个客户类型表,命名为:customer_type,

                     然后在建立控制器时,命名:CustomerType

            然后就可以在继承的父类中,检测当前控制器对应的模型(数据表),当没有传进参数时,

    默认对应的是当前的控制器的名称。这样在模型新增和编辑的时候,可以带来简便。

    这种方法有一个坏处就是,没有对应的函数将控制器转换未我们需要的数据表名。

    所以本人自己设计了一个,代码如下:

    
    
    /**
     * 将一个字符串装换为数据表的名称
     * 要求:
     *      1.字符串符合驼峰命名规则(或形式如下:aaBb => aa_ab, AaBb=> aa_bb)
     *      2.数据库的书库表命名方式如下:aa_bb
     * @param $str 需要转换的字符串 默认为当前的控制器名
     * @param $delimiter 在大写字符转化为小写的之前前一个位置用该字符填充,默认下划线
     * @return $str 转换之后的字符串
     */
    function str_to_tableName($str='', $delimiter = '_'){
        $str = $str ? $str : 	hinkRequest::instance()->controller();
        do{
            $pos = preg_match('/([A-Z])/', $str, $matches);
            if($pos === 0) break;
            $strs = explode($matches[0], $str, 2);
            $str = ($strs[0] ? $strs[0].$delimiter : '').strtolower($matches[0]).$strs[1];
        }while(1);
        return $str;
    }


    代码和逻辑并不复杂,看代码就可以懂。

            不过尴尬的是:本人突然想到,既然只是匹配,可以将控制器转化未表名,那反过来,也可以将表名转话为控制器的名啊~~~
    真的是悲催~~~不知到哪一种更加简便~。以后测试之后,再来分享,也希望有大神可以指导一下。非常感谢!

  • 相关阅读:
    GitLab的基础使用-汉化配置
    GitLab的基础使用-数据备份与恢复
    Apache Hadoop集群扩容实战案例
    Hadoop 集群-完全分布式模式(Fully-Distributed Mode)
    HDFS参数调优总结
    网站压力测试 工具webbench
    2013年十大必知的大数据分析公司
    做电子商务网上开店应该读的书
    教你用大功率路由器覆盖3平方公里的WiFi广告
    中央推进城镇化建设 六行业分享25万亿蛋糕
  • 原文地址:https://www.cnblogs.com/gxkB/p/7786526.html
Copyright © 2011-2022 走看看