Jan Behrens

Abstract Singleton in PHP

Endlich möglich ab PHP 5.3 (derzeit Beta 5):

class Singleton
{
   private $aInstances = array(); 

   final public function getInstance()
   {
      $sClassName = get_called_class();
      if (!isset(self::$aInstances[$sClassName]))
      {
         self::$aInstances[$sClassName] = new $sClassName();
      }
      return self::$aInstances[$sClassName];
   } // function getInstance()

   protected function __construct()
   {
   } // function __construct()
}

class KQE_AmDampfen extends Singleton
{
}

$oKQE = KQE_AmDampfen::getInstance();

3 Comments to Abstract Singleton in PHP

  1. 13. May 2008 at 22:27 | Permalink

    ach du heilige kqe :-)
    sieht nett aus, eröffnet mal wieder viele neue möglichkeiten für kranken spielkram zu bauen.

  2. 15. September 2008 at 17:08 | Permalink

    Du solltest die clone Methode auch noch private machen. Ansonsten hast du keine wirkliche Singleton. Ich versteh auch nicht wirklich, warum du einen Array für die Instanz verwendest.
    Aber trotzdem ganz nett ;)

  3. Bertold von Dormilich's Gravatar Bertold von Dormilich
    3. August 2010 at 14:21 | Permalink

    > Ich versteh auch nicht wirklich, warum du einen Array für die Instanz verwendest.

    Damit man verschiedene Singletons bauen kann, nämlich einen pro Implementierung. z.B.

    class KQE_AmDampfen extends Singleton
    class KQE_AmKochen extends Singleton

Leave a Reply


You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>