PHP5.5以上利用trait简单实现单例模式

关于trait的相关介绍请查看php官方手册,这儿直接上代码。

<?php
trait trait_singleton {
    private static $class = array ();
    /**
     * @return self
     */
    static function getInstance(){
        $name = get_called_class ();
        $args = func_get_args();
        $key = md5($name . $args);
        if (! isset(self::$class[$key])){
            $reflection = new ReflectionClass($name);
            self::$class[$key] = $reflection->newInstanceArgs($args);
        }
        return self::$class[$key];
    }
}
最后修改时间为:2016 年 12 月 05 日 09 时 37 分 PM
如果觉得我的文章对你有用,请随意赞赏

1 条评论

  1. chao508517

    phpstorm ide失效了 test:: getInstance()->add() ied不会提示里边有add方法,第二个问题 $key = md5($name . $args); 同样的参数调用第二次调用时候不会执行 要操作的类里面的__construct()方法,这个我测试了过的。第一个问题您遇到过没啊,有没有好点的解决办法。在网上看到了 个 new static()的东西可以解决,博客地址http://www.cnblogs.com/52php/p/5681780.html

发表评论