Öne Çıkanlar
PHP ile Web Programcılığı
|
Dreamweaver 8
|
Her Yönüyle PHP 6
|
Uzmanlar İçin PHP 5
|
Anket
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'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');
?>
