<?php
/*
* Ejemplo de la utilización del patron Singletone
*
* El patrón Singleton se aplica a situaciones en las cuales hay la necesidad de
* tener una sola instancia de una clase.
*
* http://www.lawebdelprogramador.com
*/
class Ejemplo
{
// Hold an instance of the class
private static $instance;
// A private constructor; prevents direct creation of object
private function __construct()
{
echo '<br />Se ejecuta el constructor';
}
/*
* El metodo singleton
* Declarar miembros de clases o métodos como estáticos, los hace accesibles
* desde afuera del contexto del objeto
*/
public static function singleton()
{
# Si no esta establecida la variable self::$instance la creamos
if (!isset(self::$instance)) {
# Cogemos el nombre de la clase
# __CLASS__ es una constante predefinida que devuelve el nombre de
# la clase.
$className = __CLASS__;
# Creamos la instanacia a la clase "Ejemplo"
# La variable self::$instance contendra la referencia a la clase
self::$instance = new $className;
}
# Siempre devolvemos la instanacia a la clase "Ejemplo"
return self::$instance;
}
// Metodo de ejemplo
public function metodoEjemplo()
{
echo '<br />un metodo como cualquier otro...';
}
// No se permite clonar la instancia, por eso es privada
private function __clone()
{
}
}
/*
* Esto no funcionaria, ya que el constructor es privado
* $test = new Example;
*/
# Creamos la instancia a la clase
$test = Ejemplo::singleton();
$test->metodoEjemplo();
# Como ya se ha creado la instancia, nos devolvera la misma instancia que a $test
# No se ejecutara el constructor
$test2 = Ejemplo::singleton();
$test2->metodoEjemplo();
/*
* Si intentamos clonar la clase, lanzará un error...
* $test_clone = clone($test);
*/
?>
Comentarios sobre la versión: Versión 1 (0)
No hay comentarios