Después de mucho tiempo, aquà estoy con la siguiente entrega de la serie sobre patrones de diseño con PHP, la siguiente entrega que estaba planeada era sobre el patrón factory (fábrica o factorÃa), pero en estos dÃas programé un plugin engine para gelato el cual esta versión aún debe contar con soporte para PHP4 y me topé con que una vez terminado y probado no funcionaba correctamente en PHP4, por dos detalles:
1.- PHP4 no soporta propiedades estáticas (soporta métodos estáticos y variables estáticas dentro de estos métodos, pero NO propiedades),la solución a esto vendrá en otro post.
2.- La implementación del patrón singleton más difundida no funciona como deberÃa.
Veamoslo en bits.
La clase anterior implementa el código de singleton en PHP4 más encontrado en los ejemplos sobre el tema.
Si la probamos creando el objeto obj1:
Si imprimimos su valor:
Creamos el objeto obj2:
¿Qué contenido tiene?
Entonces ya tenemos dos objetos derivados de la clase Singleton los cuales al implementar dicho patrón deberamos tener UNA sola instancia, ¿pero esto se cumple?
¿Qué nos devuelve?
Imprimir
Como vemos nos regresa el valor “Imprimir” cuando estamos esperando que imprima “Borrar”.
Para solucionarlo basta con tocar una sola lÃnea de código de la clase y cambiar la lÃnea 7 por lo siguiente:
Ahora si, nuestras pruebas saldrán correctas.