PHP单例模式对比

<?php
class Database
{
    public $db=null;
    public function __construct($config=array())
    {
        $dbms='mysql';     //数据库类型
        $host='localhost'; //数据库主机名
        $dbName='laravel';    //使用的数据库
        $user='root';      //数据库连接用户名
        $pass='123456';          //对应的密码
        $dsn="$dbms:host=$host;dbname=$dbName";
        try {
            $this->db = new PDO($dsn, $user, $pass); //初始化一个PDO对象
//            echo "连接成功<br/>";
            /*你还可以进行一次搜索操作
            foreach ($dbh->query('SELECT * from FOO') as $row) {
                print_r($row); //你可以用 echo($GLOBAL); 来看到这些值
            }
            */
//            $this->db = null;
        } catch (PDOException $e) {
            die ("Error!: " . $e->getMessage() . "<br/>");
        }


    }
}

$db1 = new Database($config);
var_dump($db1);

$db2 = new Database($config);
var_dump($db2);
$db3 = new Database($config);
var_dump($db3);

 

<?php
/**
 * Created by PhpStorm.
 * User: 海峡
 * Date: 2020/12/29
 * Time: 22:22
 */
class Database
{
    //四私一公 单例模式

    private static $instance = null;//当前实例化后的对象
    //数据库句柄
    private $db=null;

    //禁止外部使用,构造私有
    private function __construct($config=array())
    {
           //对应的密码
        $dsn="{$config['dbms']}:host={$config['host']};dbname={$config['dbname']}";
        try {
            $this->db = new PDO($dsn, $config['user'], $config['pass']); //初始化一个PDO对象
            echo "连接成功<br/>";
            /*你还可以进行一次搜索操作
            foreach ($dbh->query('SELECT * from FOO') as $row) {
                print_r($row); //你可以用 echo($GLOBAL); 来看到这些值
            }
            */
        } catch (PDOException $e) {
            die ("Error!: " . $e->getMessage() . "<br/>");
        }

    }
    //获取当前容器单例
    public static function getInstance($config=array())
    {
        if(self::$instance==null){
            self::$instance = new self($config);
        }
        return self::$instance;
    }

    //获取数据库句柄
    public function  db()
    {
        return $this->db;
    }
    //禁止克隆
    private function __clone()
    {
        // TODO: Implement __clone() method.
    }

    //禁止重建
    private function __wakeup()
    {
        // TODO: Implement __wakeup() method.
    }
}
$config['dbms'] ='mysql';     //数据库类型
$config['host'] ='localhost'; //数据库主机名
$config['dbname'] ='blog';    //使用的数据库
$config['user'] ='root';      //数据库连接用户名
$config['pass'] ='root';
$db1 = Database::getInstance($config);
var_dump($db1);
$db2 = Database::getInstance($config);
var_dump($db2);
$db3 = Database::getInstance($config);
var_dump($db3);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值