zoukankan      html  css  js  c++  java
  • php单例连接数据库

    mysql_connect() 后续的php就不支持了,所以会报错。

    现在改为使用mysqli_connect(),需要开启php扩展哟!

    <?php
    /**

    * 设计模式之单例模式

    * $_instance必须声明为静态的私有变量

    * 构造函数和析构函数必须声明为私有,防止外部程序new

    * 类从而失去单例模式的意义

    * getInstance()方法必须设置为公有的,必须调用此方法

    * 以返回实例的一个引用

    * ::操作符只能访问静态变量和静态函数

    * new对象都会消耗内存

    * 使用场景:最常用的地方是数据库连接。

    * 使用单例模式生成一个对象后,

    * 该对象可以被其它众多对象所使用。

    */

    class Danli{
      //保存类实例的静态成员变量
      private static $_instance = null;
      private $conn;
      //private标记的构造方法
      private function __construct(){
        //$conn = new mysqli('localhost', 'root', '123', 'php37');
        $this->conn = mysqli_connect('localhost', 'root', '123', 'php37');
        if (mysqli_connect_errno()) {
           printf("Connect failed: %s\n", mysqli_connect_error());
           exit();
        }
      }

      //单例方法,用于访问实例的公共的静态方法
      public static function getInstance(){
          if(!self::$_instance instanceof self){
              self::$_instance = new self;
           }
          return self::$_instance;
       }
       //创建__clone方法防止对象被复制克隆
       private function __clone(){ }
       // 防止析构函数被调用
       // private function __destruct(){ }
    }
       //用new实例化private标记构造函数的类会报错
       //$danli = new Danli();
       //正确方法,用双冒号::操作符访问静态方法获取实例
       $danli=Danli::getInstance();
       var_dump($danli);
       //$danli->test();
       //复制(克隆)对象将导致一个E_USER_ERROR
       //$danli_clone=clone $danli;

  • 相关阅读:
    jbpm 为任务自由选择办理人
    我永远的 dell 15r
    select radio readonly
    面向对象的5条基本设计原则
    Java数据库缓存思路
    作为java应届生,面试求职那点事
    项目开发中数据字典设计实现缓存
    oracle 优化 —— 分区表
    myeclipse快捷键
    win8 安装myeclipse 失败 MyEclipse ForSpring 安装失败
  • 原文地址:https://www.cnblogs.com/sxiangyues/p/6529943.html
Copyright © 2011-2022 走看看