闲暇之余用PHP封装PDO之单例模式

下面这个类是记录一下,说不定之后写自己的框架的时候会用到。执行 sql 的逻辑需要自己diy哦。

连接数据库的地方也可以进行优化

主要功能:

  1. 单例模式(懒汉模式)
  2. 防止克隆

调用方式如下

$res = Db::getInstance();

DB类如下

Class DB
{
 
    //单例数据库类
    private static $_instance;
    private $pdo;
    private $db_host = "127.0.0.1";
    private $db_user = "root";
    private $db_pwd = "123456";
    private $db_name = "test";
    private $charset = "utf8";
    private $db_port = "3306";
 
 
 
    //阻止克隆对象
    private function __clone()
    {
    }
 
    //阻止new对象 private 修饰
    private function __construct()
    {
        $this->connect();
        $this->setCharSet();
    }
 
    /**
     * 连接数据库
     */
    private function connect()
    {
        try {
            $this->pdo = new PDO("mysql:host=$this->db_host;port=$this->db_port;dbname=$this->db_name", $this->db_user, $this->db_pwd);
            // echo "连接成功";
        } catch (Exception $e) {
            throw new Exception('MySql连接错误!');
            // 写入日志逻辑...
            file_put_contents(__DIR__ . '/log/'.strftime('%Y-%m-%d').'.log',$e->getMessage().PHP_EOL,FILE_APPEND);
            return false;
        }
 
    }
 
    //初始化Db类只需执行该静态方法
    public static function getInstance(): Db
    {
        if (!(self::$_instance instanceof self)){
            self::$_instance = new self();
        }
        return self::$_instance;
    }
 
    /**
     * 设置字符集
     */
    private function setCharSet(){
        $this->pdo->query($this->charset);
    }
 
    // 执行sql语句, 无返回结果
    public function exec($sql){
        // diy......
    }
 
    // 执行select 语句,有返回结果
    public function select(){
        // diy....
    }
   }

更多的 php 怀旧小知识,可关注【php开发者社区】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python小叮当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值