php singleton pattern uygulaması

Singleton

Yazılım Mühendisliğinde Creational Design Pattern grubu altında bulunmaktadır. Kısaca uygulama ömrü boyunca bir nesnenin bir kere yaratılmasıdır.Her istemci bu örneği kullanır.

Nerelerde Kullanılır ?  

DB Connector

Her istemcide sürekli olarak yeni veritabanı bağlantısı yapmak performans kaybına neden olur.Onun yerine singleton-pattern’ı kullanmak en mantıklısıdır.

Logger

Çeşitli amaçlara yönelik çok sayıda log tutmanız gerektiğinde işinze yarar.

UML Diagram

<?php

namespace Creational\Singleton;

/** final access modifier class'ın extend etmesini engeller  */
final class Singleton
{
    /**
     * @var Singleton
     */
    private static $instance;

    /**
     *  instance'ı alır
     */
    public static function getInstance(): Singleton
    {
        if (null === static::$instance) {
            static::$instance = new static();
        }

        return static::$instance;
    }

    /**
     * Birden fazla örnek oluşturmak isterse engeller 
     * 
     */
    private function __construct()
    {
    }

    /**
     *İkincil bir örneğini oluşturmak isterse yani klonlamak isterse engeller
     */
    private function __clone()
    {
    }

    /**
     * nesnenin unserialize olmasını engeller
     */
    private function __wakeup()
    {
    }
}