文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>代码可以如此简洁灵活!

代码可以如此简洁灵活!

时间:2011-02-18  来源:Neoh

请阅读如下代码:

static function create($length = 4, $lefttime = 900,
                           $style = 'simple', array $options = null)

{
    $class_name = 'Helper_ImgCode' . ucfirst(strtolower(preg_replace('/[^a-z0-9_]+/i', '', $style)));
    $options = (array)$options;
    $options['code_length'] = $length;
    $imgcode_obj = new $class_name($options);
    $code = $imgcode_obj->generateCode();
    self::_writeImgcodeToSession($code, $lefttime);
    return $imgcode_obj->generateImage($code);
}

发现了吗?被调用的类名是动态构造的!!!

先将$style字符串去掉非法字符:preg_replace('/[^a-z0-9_]+/i', '', $style)

然后全部转化为小写:strtolower(preg_replace('/[^a-z0-9_]+/i', '', $style))

再把首字母大写:ucfirst(strtolower(preg_replace('/[^a-z0-9_]+/i', '', $style)))

连接之后变成了一个需要的类名:$class_name = 'Helper_ImgCode' . ucfirst(strtolower(preg_replace('/[^a-z0-9_]+/i', '', $style)));

最后通过类名变量调用类代码,创建了一个对象:$imgcode_obj = new $class_name($options);

短短的两行代码,省去了switch语句繁杂。

好处不只是在于简洁,以后想要有不同的style来处理的话只需要改变$style值,然后再写一个对应的类就可以了。达到了很好的扩展性。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载