zoukankan      html  css  js  c++  java
  • PHP设计模式---单例模式

    单例模式是PHP开发中最常用的一种模式之一了.

    举个例子:当使用TP5或者laravel5等框架开发网站时,可能需要实例化多个model,每个model都要去操作数据库,

    如果没有单例模式,那么岂不是每个model都要去创建一个数据库请求? 这样会带来非常大的开销,本文就以Db类浅析单例模式

    单例模式的设计准则:

    1.构造函数设为私有,不让外部产生对象

    2.拥有一个保存自己的内部静态实例

    3.拥有一个提供给外部的静态函数,返回单例对象

    简单说就是:不让进大门,留后门的想法.

    <?php
    class Db
    {
        static private $_instance;  //使用_instance命名
        private $config = [
            'host'=>'localhost',
            'db'=>'test', //选择数据库
            'user'=>'root',
            'password'=>'123456'
        ];
    
        private function __construct(){
            //禁止外部使用构造函数
            $dsn = "mysql:host=".$this->config['host'].";dbname=".$this->config['db'];
            $user = $this->config['user'];
            $password = $this->config['password'];
            self::$_instance = new PDO($dsn,$user,$password);
    
        }
        private function __clone(){
            //禁止外部克隆对象
        }
        static public function getInstance(){ //使用getInstance命名
    
            empty(self::$_instance) && new self();
            return self::$_instance;
        }
    }
    
    $db1 = Db::getInstance();
    $db2 = Db::getInstance();
    var_dump($db1===$db2);

    输出:true

  • 相关阅读:
    ioctl函数用法小记
    scanf函数用法小记
    printf函数用法小记
    REDIS
    lspci 虚拟机网卡对应关系
    vmware安装ubuntu " Intel VT-x 处于禁用状态"
    win10远程桌面配置
    Win10如何彻底禁用小娜?彻底禁用小娜的方法
    为什么Windows7打开项目的方式是灰的不能修改
    以下suse11.3x64可以安装pycrypto-2.6.1
  • 原文地址:https://www.cnblogs.com/dpdp/p/7474742.html
Copyright © 2011-2022 走看看