Kotchasan Framework Documentation

Kotchasan Framework Documentation

Singleton implementation

TH 05 Feb 2026 06:23

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 ลูก)

ข้อควรระวัง

  1. Constructor Private: ไม่สามารถใช้ new MyClass() ได้ ต้องใช้ MyClass::getInstance() เท่านั้น
  2. Abstract: Kotchasan\Singleton ไม่สามารถนำไปใช้งานตรงๆ ได้ ต้องสืบทอดก่อน