将一个驼峰式的字符串转化为在大写字母前用某种字符填充并将大写字母变成小写

小说:黑松批发价格哪家最实惠?作者:道丁卓丁更新时间:2019-04-19字数:75037

        在进行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;
}


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

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

当前文章:http://www.leetaemin.cn/20186euo5kvuyg/index.html

发布时间:2019-04-19 13:40:29

紫藤可以种在屋顶吗? 广西紫荆花基地在哪里? 紫穗槐每平米种植多少株? 混播草坪种子多少钱一斤? 南方养羊种什么牧草好? 结香的种子哪里能买到? 花期在冬季的花卉有哪些? 重庆花海一般种什么植物? 常见的耐阴草花品种有哪些? 哪里有卖籽粒苋牧草种子?

94660 41701 15562 50055 62928 51497 55583 59772 78155 64110 10167 19418 85332 21339 67093 23953 50098 38130 98511 29148 18616 10501 87425

我要说两句: (0人参与)

发布