下面这个类是记录一下,说不定之后写自己的框架的时候会用到。执行 sql 的逻辑需要自己diy哦。
连接数据库的地方也可以进行优化
主要功能:
- 单例模式(懒汉模式)
- 防止克隆
调用方式如下
$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开发者社区】