Pattern Singleton en PHP4
A pesar de sus limitaciones en cuanto a orientación a objetos, PHP4 permite implementar un pattern del tipo Singleton.
Por defecto, en PHP4 (y a diferencia de PHP5) los objetos se devuelven/asignan por valor (una copia), por ello es necesario indicar expresamente que deseamos devolver/asignar una referencia del objeto en cuestión.
Una de las formas más elegantes de implemetar este pattern es:
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 | // Clase de la cual deseamos que exista // una única instancia en todo el programa class Config { var $message = null; function set($message) { $this->message = $message; } function get() { return $this->message; } } // Pattern que se ocupará de devolver // la única instancia de la clase Config class Singleton { // Método que devuelve una referencia al objeto function &get() { static $instance; if ( ! isset($instance) ) { $instance = new Config(); print "instancia creada.\n"; } return $instance; } } // Forma de uso $config =& Singleton::get(); $config->set('hello world.'); printf("%s\n", $config->get()); $config =& Singleton::get(); printf("%s\n", $config->get()); |
Salida del programa
instancia creada.
hello world.
hello world.
hello world.
hello world.



