php设计模式单例模式

在oop中,一个对象只负责一个特定的任务通常是一种很好的做法。

所有的单例类至少拥有以下三种公共元素。

1. 必须拥有一个构造函数,并且被标记为private。

2. 拥有一个保存类的实例的静态成员变量。

3. 拥有一个访问这个实例的公共的静态方法。

4. 另外,需要创建__clone()方法防止对象被复制(克隆)。

和普通类不同,单例类不能在其他类中直接实例化,只能被自身实例化。要想获得这种效果,__construct()方法必须被标记为private。

<?php

    class Database {
         private $_db;
         static $_instance;
         
         private  function __construct()
         {
              $this->_db = pg_connect('dbname=example_db');
         }

          private __clone() {}  

          public static function getInstance(){
               if (! (self::$_instance intanceof self)) {
                    self::$_instance = new self();
               }
               return self::$_instance;
          }

           public function query($sql)
           {
                return pg_query($this->_db,$sql);
           }
    } 
    $db = Database::getInstance();
    $db->query('select * from table');

?>   
原文地址:https://www.cnblogs.com/zhaozhilu/p/2944174.html