Kotchasan Framework Documentation
Singleton implementation
Singleton implementation
Kotchasan\Singleton เป็น Abstract Class ที่ implement Singleton Pattern ช่วยให้ Class ที่สืบทอดมีเพียง Instance เดียวตลอดการทำงานของระบบ
การใช้งาน
สร้าง Class ที่สืบทอดจาก Kotchasan\Singleton และ implement method init
use Kotchasan\Singleton;
class MyConfig extends Singleton
{
private $settings;
/**
* กำหนดค่าเริ่มต้น (ทำงานครั้งแรกครั้งเดียว)
*/
protected function init()
{
$this->settings = [
'color' => 'red',
'size' => 10
];
}
public function get($key)
{
return $this->settings[$key] ?? null;
}
}การเรียกใช้งาน
ใช้ Method getInstance() เพื่อเรียก Instance
// เรียกใช้งานครั้งแรก (สร้าง Instance + เรียก init)
$config = MyConfig::getInstance();
echo $config->get('color'); // "red"
// เรียกใช้งานครั้งต่อมา (ได้ Instance เดิม)
$config2 = MyConfig::getInstance();Methods
getInstance(): static
คืนค่า Instance ของ Class (ถ้ายังไม่มีจะสร้างใหม่)
- Returns: Instance ของ Class
init()
Method ที่จะถูกเรียกเมื่อสร้าง Instance ครั้งแรก ใช้สำหรับกำหนดค่าเริ่มต้น
- Visibility:
protected abstract(ต้อง implement ใน Class ลูก)
ข้อควรระวัง
- Constructor Private: ไม่สามารถใช้
new MyClass()ได้ ต้องใช้MyClass::getInstance()เท่านั้น - Abstract:
Kotchasan\Singletonไม่สามารถนำไปใช้งานตรงๆ ได้ ต้องสืบทอดก่อน