单例模式(Singleton Pattern)是一种常用的软件设计模式,其目的是确保一个类只有一个实例,并提供一个全局访问点。在 PHP 项目中,单例模式通常用于管理数据库连接、配置文件、日志记录等需要全局访问的资源。以下是一个实际应用案例:
假设我们正在开发一个 PHP 应用程序,需要连接到 MySQL 数据库。为了提高性能和资源利用率,我们可以使用单例模式来确保整个应用程序中只有一个数据库连接实例。
首先,我们创建一个名为 DatabaseConnection
的类,用于封装数据库连接逻辑。
class DatabaseConnection {
private static $instance = null;
private $connection;
private function __construct() {
// 连接数据库的逻辑
$this->connection = new PDO('mysql:host=localhost;dbname=mydb', 'username', 'password');
}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new DatabaseConnection();
}
return self::$instance;
}
public function getConnection() {
return $this->connection;
}
}
在这个类中,我们使用了私有构造函数来防止外部直接创建新的实例。getInstance
方法用于获取唯一的实例,如果实例尚未创建,则会创建一个新实例。getConnection
方法用于获取底层的数据库连接对象。
接下来,我们在应用程序的其他部分使用 DatabaseConnection
单例来获取数据库连接。
// 获取数据库连接实例
$db = DatabaseConnection::getInstance();
// 使用连接执行查询
$stmt = $db->getConnection()->prepare("SELECT * FROM users");
$stmt->execute();
// 处理查询结果
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
通过这种方式,无论我们的应用程序有多少个部分需要访问数据库,都只会创建一个 DatabaseConnection
实例,从而节省了资源并提高了性能。