加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP面向对象―单例模式介绍

发布时间:2022-07-09 06:18:59 所属栏目:PHP教程 来源:互联网
导读:单例模式是设计模式中比较简单的模式,会在一些特殊的场影得以运用,比如:应用中只需要一个对象实例存在,这时使用单例模式能够节省内存。单例模式体现了面向对象封装特性中的单一职责和对象自治原则。 构建一个PHP的单例类需要以下要求: 构造函数为privat
  单例模式是设计模式中比较简单的模式,会在一些特殊的场影得以运用,比如:应用中只需要一个对象实例存在,这时使用单例模式能够节省内存。单例模式体现了面向对象封装特性中的“单一职责”和“对象自治”原则。
 
  构建一个PHP的单例类需要以下要求:
 
  构造函数为private,防止外部代码new此对象。
 
  构造函数为final可以禁止子类覆盖。
 
  拥有一个静态成员变量来保存自身实例。
 
  拥有一个返回自身实例,公共且静态的方法,此方法负责只产生一个实例,如果已经有一个实例则直接返回。
 
  为了防止对象被克隆,还要重写__clone()方法
 
  <?php
  class Database {
      private $_db;
      static $_instance;
      final private function __construct($dbname,$user='root',$password='',$port='3306') {
          $conStr = "dbname=".$dbname." user=".$user." password=".$password." port=".$port;
          $this->_db = pg_connect($conStr);
      }
      private __clone() {};
      public static function getInstance($dbname,$user='root',$password='',$port='3306') {
          if( ! (self::$_instance instanceof self) ) {
              self::$_instance = new self($dbname,$user='root',$password='',$port='3306');
          }
          return self::$_instance;
      }
      public function query($sql) {
          return pg_query($this->_db, $sql);
      }
  }
  ?> 

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!