Pattern Singleton
Dalam sebuah aplikasi kadang diharapkan hanya ada satu instance suatu objek. Misalnya koneksi ke suatu database server. Nah intinya dalam implementasinya bagaimana kelas singleton nanti mengintersep ketika ada percobaan dalam membuat objek baru. Ok, here we go:
class DB{
public static function Connect(){
return mysql_connect("localhost","root","");
}
}
class DatabaseConnection{
static $state;
public static function initiateConnection(){
if (self::$state == null){
self::$state = new DatabaseConnection();
echo 'Database connection initiated';
}else echo 'Failed initiating connection';
}
private function __construct(){
DB::Connect();
}
public static function destroyConnection(){
self::$state=null;
echo 'Connection destroyed';
}
}
DatabaseConnection::initiateConnection();
//DatabaseConnection::destroyConnection();
DatabaseConnection::initiateConnection();
Pada class di atas ketika pertama kali di akses nilai variabel state masih null, sehingga request untuk membuat objek diizinkan. Pemanggilan kedua sudah tidak diizinkan kembali karena nilai variabel state sudah tidak null lagi. Agar dapat terjadi inisiasi lagi di kelas tersebut anda harus merubah nilai variabel state menjadi null kembali, di atas sudah sediakan method static destroyConnection untuk merubahnya.







