Singleton Pattern รับประกันว่าคลาสมีอินสแตนซ์เพียงตัวเดียว และให้จุดเข้าถึงแบบสากล (Global Access) ไปยังอินสแตนซ์นั้น มั่นใจได้ว่ามีอ็อบเจกต์เพียงตัวเดียวในทั้งแอปพลิเคชันในสถานะที่ควบคุมได้ Singleton Pattern ให้วิธีเข้าถึงอ็อบเจกต์เพียงตัวเดียวนั้นโดยตรง โดยไม่ต้องสร้างอินสแตนซ์ของคลาสใหม่
ตัวอย่าง
<?php
class database {
public static $connection;
private function __construct(){
echo "connection created";
}
public function connect(){
if(!isset(self::$connection)){
self::$connection = new database();
}
return self::$connection;
}
}
$db = database::connect();
$db2 = database::connect();
?>
ผลลัพธ์
connection created
คำอธิบาย
ในตัวอย่างข้างต้น เราปฏิบัติตาม Singleton Pattern ดังนั้นอ็อบเจกต์ $db2 จึงไม่สามารถสร้างใหม่ได้ จะมีอ็อบเจกต์เพียงตัวเดียวที่ถูกสร้างและพร้อมใช้งานทั่วทั้งแอปพลิเคชัน