<?php// 单例模式连接数据库 应用程序跟设计库交互namespace app\chloe;use pdo;interface idbBase{// 数据库连接curdstatic function insert($db, $data);static function select($db, $where = []);static function update($db, $where = []);static function delete($db, $data, $where = []);// 数据库连接static function doconnect($dsn, $user, $password);}// 单例模式连接数据库abstract class adb implements idbBase{private static $_instance;private function __construct(){}private function __clone(){}static function doconnect($dsn, $user, $password){// 创建adb类的唯一实例 获取唯一的pdo对象if (is_null(self::$_instance)) {echo 2;self::$_instance = new pdo($dsn, $user, $password);}return self::$_instance;}}//工作类class DB extends adb{// 数据库连接curdstatic function insert($db, $data){}static function select($db, $where = ['uid' => 1]){foreach ($where as $k => $v) {$sql = $k . ' > ' . $v;}return $db->query("SELECT * FROM `mj_user` WHERE " . $sql . " LIMIT 3;")->fetchAll(PDO::FETCH_ASSOC);}static function update($db, $where = []){}static function delete($db, $data, $where = []){}}//客户端代码$config = ['type' => $type ?? 'mysql','host' => $host ?? 'localhost','dbname' => $dbname ?? 'phpcn','username' => $username ?? 'root','password' => $password ?? '','port' => $port ?? '3308','charset' => $charset ?? 'utf8'];extract($config);$dsn = sprintf('%s:host=%s;port=%s;charset=%s;dbname=%s', $type, $host, $port, $charset, $dbname);$pdo = DB::doconnect($dsn, $username, $password);// var_dump(DB::select($pdo));// 检查是否获取到pdo唯一实例for ($i = 0; $i < 10; $i++) {adb::doconnect($dsn, $username, $password);}
相关推荐
© 2020 asciim码
人生就是一场修行