วันพฤหัสบดีที่ 25 พฤศจิกายน พ.ศ. 2553

singleton pattern


<?php
//singleton โครงสร้างเพื่อป้องกันไม่ให้มีการสร้าง instance ขึ้นหลายครั้ง
//อย่างเช่น database class connection ที่ควรจะมีแค่ครั้งเดียว

class Example
{
private static $obj;
private function __construct() {}
public static function singleton() // singleton method
{
if (!isset(self::$obj)) {
$c = __CLASS__;
self::$obj = new $c;
}
return self::$obj;
}
public function __clone(){ // Prevent users to clone the instance
trigger_error('Clone is not allowed.', E_USER_ERROR);
}
}

$obj = Example::singleton();
//$obj = new Example();// error (private constructor)
//$obj2 = clone $obj;// error

?>

ไม่มีความคิดเห็น:

แสดงความคิดเห็น