Heim > Backend-Entwicklung > PHP-Tutorial > 还是说php实现singleton模式_PHP教程

还是说php实现singleton模式_PHP教程

WBOY
Freigeben: 2016-07-13 17:32:52
Original
978 Leute haben es durchsucht

这天考虑用php(做为现在的主流开发语言)来singleton一下,看到一篇比较全面的总结 -- singleton模式的几种实现.其中总结的php(做为现在的主流开发语言)5的实现:

PLAIN TEXTphp(做为现在的主流开发语言):

class MyClass
  {
     private static $instance;
 
      public static function singleton()
     {
         if (!isset(self::$instance)) {
             $c = __CLASS__;
             self::$instance = new $c;
          }
        return self::$instance;
 
     }
  }

这段代码拿来使用,不会太爽,因为一般都会继承自MyClass,而$c = __CLASS__;获取的始终是基类的类名,不可用。只能考虑找其它实现方法。


接着俺开始查看文章中的函数方式实现的singleton,实现的很不错,缺点是类被实例化时不能带参数,这里贴上俺的版本:

PLAIN TEXTphp(做为现在的主流开发语言):

function getObj() {
    static $obj = array();
    $args = func_get_args();
 
    if(empty($args))
        return null;
 
    $clazz = $args[0];
    if(!is_object($obj[$clazz])) {
        $cnt = count($args);
        if($cnt> 1) {
            for($i = 1, $s = ; $i                 $s[] = $args[ . $i . ];
            eval($obj[$clazz] = new $clazz( . join(,, $s) . ););
        } else {
            $obj[$clazz] = new $clazz;
        }
    }
 
    return $obj[$clazz];
}

在php(做为现在的主流开发语言)5下可以很爽的调用:

PLAIN TEXTphp(做为现在的主流开发语言):

getObj(MyClass, $param1, $param2)->myMethod();

以前的幼稚版:
单子模式(SINGLETON)的简单实现

http://www.ooso.net/index.php(做为现在的主流开发语言)/archives/182

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/508670.htmlTechArticle这天考虑用php (做为现在的主流开发语言) 来singleton一下,看到一篇比较全面的总结 -- singleton模式的几种实现.其中总结的php (做为现在的...
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage