Singleton Pattern đảm bảo một lớp chỉ có một instance duy nhất và cung cấp điểm truy cập toàn cục. Đối tượng duy nhất này có sẵn khắp ứng dụng trong trạng thái được kiểm soát.
Ví dụ
<?php
class Database {
public static $connection;
private function __construct() {
echo "Kết nối đã tạo\n";
}
public static function connect() {
if (!isset(self::$connection)) {
self::$connection = new Database();
}
return self::$connection;
}
}
$db1 = Database::connect(); // tạo mới
$db2 = Database::connect(); // trả về instance cũ
?>
Kết quả
Kết nối đã tạo
Giải thích
Lần gọi thứ hai Database::connect() không tạo đối tượng mới mà trả về instance đã tồn tại. Constructor private ngăn chặn khởi tạo trực tiếp bên ngoài.