php 单例模式,创建mysqli数据库链接的单例对象
封面图
•
2026-01-02
•
PHP
268
1
1
0
在 PHP 中,**单例模式(Singleton Pattern)** 是一种常用的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。在开发中,我们常常使用单例模式来管理数据库连接,比如 `mysqli` 数据库连接。 下面是一个使用 **PHP 单例模式创建 mysqli 数据库连接** 的示例: --- ### ✅ 单例模式实现 mysqli 数据库连接 ```php <?php class Database { // 私有静态变量,保存类的唯一实例 private static $instance = null; // 数据库连接对象 private $connection; // 构造函数私有化,防止外部实例化 private function __construct() { // 数据库配置信息 $host = 'localhost'; $username = 'root'; $password = ''; $database = 'mydatabase'; // 创建 mysqli 连接 $this->connection = new mysqli($host, $username, $password, $database); // 检查连接是否成功 if ($this->connection->connect_error) { die("Connection failed: " . $this->connection->connect_error); } } // 获取数据库连接的静态方法 public static function getInstance() { if (self::$instance === null) { self::$instance = new self(); } return self::$instance; } // 获取 mysqli 连接对象 public function getConnection() { return $this->connection; } // 禁止克隆 private function __clone() {} // 禁止反序列化 private function __wakeup() {} } // 使用示例 $db = Database::getInstance(); $conn = $db->getConnection(); // 执行查询 $result = $conn->query("SELECT * FROM users"); while ($row = $result->fetch_assoc()) { print_r($row); } ``` --- ### 🔍 说明 - `private static $instance`:保存类的唯一实例。 - `private function __construct()`:防止外部通过 `new` 创建实例。 - `public static function getInstance()`:获取唯一的实例。 - `getConnection()`:返回 mysqli 连接对象,供其他代码使用。 - `__clone()` 和 `__wakeup()`:防止通过克隆或反序列化创建新实例,保证单例性。 --- ### 📌 注意事项 - 如果你使用的是 PDO 而不是 mysqli,也可以用类似的方式实现单例。 - 在生产环境中,建议将数据库配置(如用户名、密码、数据库名)放在配置文件中,而不是硬编码在类中。 - 单例模式适用于需要全局访问的资源(如数据库连接、缓存等),但不要滥用,避免过度耦合。 --- 如果你需要更高级的封装(如使用 PDO 或添加查询方法),也可以继续扩展这个类。需要的话我可以帮你扩展。
上一篇:
center os系统的安装
下一篇:
shell的优越性
标题录入,一次不能超过6条
留言
评论