DbPool.php 2.5 KB
<?php

namespace Lib;

/**
 * db 池
 * @author:dc
 * @time 2023/2/13 15:03
 * Class DbPool
 * @package Lib
 */
class DbPool {

    /**
     * @var \Lib\DbPool[]
     */
    static $instance = [];


    /**
     * @var \PDO
     */
    private $client;

    /**
     * @return mixed
     * @author:dc
     * @time 2023/2/13 9:12
     */
    public function getClient(){
        return $this->client;
    }

    /**
     * 表
     * @var string
     */
    private string $table;

    /**
     * 查询条件
     * @var string|array
     */
    private string | array $where;


    public function __construct()
    {
        try {
            $this->client = new \PDO(
                'mysql:charset=utf8mb4;dbname='.DB_DATABASE.';host='.DB_HOST.';port='.DB_PORT,
                DB_USER,
                DB_PASSWORD,
                [
                    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
                    \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'",
                     \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
                ]
            );
        }catch (\PDOException $e){

        }

    }


    /**
     * 表
     * @param $table
     * @return $this
     * @author:dc
     * @time 2023/2/13 14:36
     */
    public function table($table){
        $this->table    =   $table;
        return $this;
    }

    /**
     * 条件
     * @param string|array $where
     * @return $this
     * @author:dc
     * @time 2023/2/13 14:38
     */
    public function where(string|array $where){
        $this->where    =   $where;
        return $this;
    }


    /**
     * @param $sql
     * @param null $params
     * @return false|\PDOStatement
     * @author:dc
     * @time 2023/2/13 14:41
     */
    private function query($sql,$params=null){

    }


    public function get($sql){

    }


    /**
     * 查询一条数据
     * @param string|array $sql
     * @return mixed|null
     * @author:dc
     * @time 2023/2/13 14:54
     */
    public function first(string|array $sql){

        $query = $this->client->prepare(is_array($sql) ? $sql[0] : $sql);

        if($query->execute(is_array($sql) ? $sql[1] : null)){
            return $query->fetch();
        }

        return null;
    }


    public function delete(){

    }


    /**
     * @param $cid
     * @return DbPool
     * @author:dc
     * @time 2023/2/13 9:39
     */
    public static function instance($cid=0){
        if(empty(static::$instance[$cid])){
            static::$instance[$cid] = new DbPool();
        }
        return static::$instance[$cid];
    }


}