Código de PHP - Patrón Singletone

Imágen de perfil

Patrón Singletonegráfica de visualizaciones


PHP

Publicado el 21 de Octubre del 2008 por Xavi
4.757 visualizaciones desde el 21 de Octubre del 2008. Una media de 14 por semana
El patrón Singleton se aplica a situaciones en las cuales hay la necesidad de tener una sola instancia de una clase.
Ejemplo de la utilización del patrón Singletone con PHP5.

Versión 1

Publicado el 21 de Octubre del 2008gráfica de visualizaciones de la versión: Versión 1
4.758 visualizaciones desde el 21 de Octubre del 2008. Una media de 14 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?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
 

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s1718