El patrón de diseño Singleton está pensado para restringir la creación de objetos de una clase determinada garantizando que sólo exista una instancia de dicha clase y proporcionar un punto de acceso global a ella.
Un ejemplo de utilización de este patrón podría ser una clase para la conexión a la base de datos. Mediante esta clase evitaremos que haya mas de una conexión abierta a la vez en cada aplicación y en cada acceso a la base de datos que necesitemos.
Para crear esta clase utilizando el patrón Singleton tendremos en cuenta lo siguiente:
La implementación básica en PHP sería la siguiente:
<?php Class Conexion { static private $thisInstance = null; private function __construct() { ... } static public function getInstance() { if(self::$thisInstance == null) self::$thisInstance = new Conexion(); return self::$thisInstance; } .... } ?>
Cuando en alguna parte de la aplicación necesitemos acceder a la base de datos, recuperaremos la instancia de la clase y trabajaremos con ella.
// Obtendremos la instancia
$db = new Conexion::getInstance();
// Y ya podremos trabajar con ese objeto
$db->exec("select * from clientes");
...
Este patrón suele ser utilizado en clases que acceden a un recurso único (fichero, base de datos, etc...) de forma que podremos controlar la creación de objectos que acceden a dichos recursos al tener una sola instancia.