El patron Singleton es una de las maneras mas utilizadas en POO para mantener solo una instancia de una determinada clase. Esto puede ser util en muchas ocaciones, en donde necesitemos controlas las instancias creadas. Se utiliza mucho en lenguajes como C++ o Java.
Tambien se puede utilizar en PHP como en este ejemplo
<?php
class Ejemplo
{
// Contenedor Instancia de la Clase
private static $instance;
// A private constructor; previene creación de objetos vía new
private function __construct()
{
echo 'Soy el constructor';
}
// EL método singleton
public static function singleton()
{
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
// Clone no permitido
public function __clone()
{
trigger_error('Clone no se permite.', E_USER_ERROR);
}
}
?>
Pero leyendo el blog joni2back.com.ar encontre otra forma de hacerlo.
<?php
private static $myInstance = array();
public static function getInstance($instanceName = 'default')
{
return isset(self::$myInstance[$instanceName]) ?
self::$myInstance[$instanceName] :
self::$myInstance[$instanceName] = new self;
}
//Default instance
MyClass::getInstance()->setUsername('root');
//Payloads instance
MyClass::getInstance('payloads')->setUsername('guest')



