php Singleton Pattern

php Singleton Pattern

Ketika kita membuat sebuah aplikasi, biasanya ada object-object yang kita buat dan digunakan secara bersamaan (sharing) di seluruh aplikasi. Contoh yang paling mudah adalah koneksi ke database. Koneksi database biasanya kita inisaliasi diawal code kita dan di destroy ketika aplikasi kita tutup.

Kita gak mungkin mengcreate tiap object database maka akan boros resource. selama ini yang sering dilakukan adalah

  • Menyimpannya object yang mau di share sebagai object global
  • Menjadikan object tersebut sebagai parameter sebuah object

ada satu cara lagi yitu menggunakan pattern singleton contoh:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
abstract class Singleton
{
    static abstract public function getInstance();
    static final protected function getClassInstance($klass, $args=NULL)
    {
      if(self::$instances === NULL)
            self::$instances = array();
 
        if(!array_key_exists($klass, self::$instances))
            self::$instances[$klass] = array();
 
        $key = serialize($args);
 
        // jika gak ada di instann
        if(!array_key_exists($key, self::$instances[$klass]))
        {
                self::$instances[$klass][$key] = new $klass($args);
        }
 
        // Return instance $klass
        return self::$instances[$klass][$key];
    }
    //menyimpan object yang telah diinstant berdasrkan ID
    static private $instances;
}

Kelas diatas merupakan kelas abstract yang berfungsi untuk membuat sebuah klas singleton

contoh penggunaan:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
final class Database extends Singleton
{
    public     $name;
    public   $data;
   static public function getInstance($name = 'Default')
    {
        $args = array('name' => $name);
        return Singleton::getClassInstance(__CLASS__, $args);
    }
 
    protected function __construct($args)
    {
        $this->name = $args['name'];
    }
}
$a = Database:getInstance();
$a->data="ini dari Variabel A";
$b = Database:getInstance('Default');
$c = Database:getInstance('Default2');
$d = Database:getInstance('Default2');
 
$d->data="ini dari Variabel D";
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);

Artikel yang berhubungan

About ibnoe
Hi, my name is Ibnu Daqiqil Id and I’m an indonesian Web Developer. I love creating simple, unique and easy-to-use web application and what most counts for me is to work with people who are passionate about what they do.

2 Responses to “php Singleton Pattern”

  1. Haqqi says:

    Singleton ini konsep dasarnya seperti apa sih?

  2. ibnoe says:

    Satu instance object pada saat eksekusi.. jadi tidak perlu menggunakan variabel global atau reinstance


Leave a Reply

Tags

,

Postingan Terbaru

Copyright © 2010 Tutorial PHP Jquery Codeigniter Ajax javascript