單例模式(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
實例,從而節省了資源并提高了性能。