Öne Çıkanlar

PHP ile Web Programcılığı
Price: 39.0 TL 39.0 TL
Dreamweaver 8
Price: 23.0 TL 23.0 TL
Her Yönüyle PHP 6
Price: 25.65 TL 25.65 TL
Uzmanlar İçin PHP 5
Price: 18.21 TL 18.21 TL

Anket

En beğendiğiniz PHP kitabı hangisi?

Singleton Pattern



Herhangi bir class'ı birden çok yerde kullanmak gerektiğinde, class'ı çağırırken new operatörü kullanılır. New operatörüyle çağrılan class ram'de yeni bir sınıf oluşturur. Her seferinde aynı class için hafızada bir yer işgal etmektense daha önce çağırdığımız sınıfı kullanmak daha mantıklıdır. Kısaca bu yönteme singleton pattern denir.

PHP'nin değişken yapısının esnekliğinden yararlanarak, her class için singleton metodu oluşturmadan bu işi çözebiliriz. Bunun için aşağıdaki class işimizi görecektir. Çağırmak istediğimiz class'ı "__construct metodunda parametre olmaması gerekir" $X = Loader::loadClass('X'); şeklinde çağırarak performans kayıplarını önleyebilirsiniz.

<?php
/**
 * class yaratmaya yarayan class
 * 
 * @author Mehmet Şamlı
 */
class Loader

    private static 
$objects = array();
    
/**
     * classın construct methodu yoktur.
     * dolayısıyla new Loader şeklinde çağrılamaz.
     * Bunun için fonksiyonu final private şeklinde tanımladık
     *
     * @return void
     */
    
final private function __construct() 
    {
    }
    
/**
     * class klonlanamaz.
     *
     * @return void
     */
    
final private function __clone() 
    {
    }
    
/**
     * class çağıran method.
     * Eğer class önceden yaratılmışsa aynen alır yaratılmamışsa 
     * eğer yaratılmamışsa yeni bir class yaratır
     *
     * @param string $class
     * @return object
     */
    
public static function &loadClass($class
    {
        if (isset(
self::$objects[$class]))
            return 
self::$objects[$class];
          
self::$objects[$class] = new $class();  
          return 
self::$objects[$class]; 
    }
}

class 
X{
    
}
$X Loader::loadClass('X');

?>