Ver Mensaje Individual
  #15 (permalink)  
Antiguo 06/05/2010, 00:06
Avatar de maturano
maturano
 
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 4 meses
Puntos: 36
Respuesta: PHP 5.2 vs PHP 5.3 parámetros por defecto

Te faltó una "u"; me leo raro.

Confieso: no leí todo el tema. Ahora lo hago y no entiendo la razón de tu reclamo. El tema si no lo he malentendido, se ha llevado así:
- danmichel coloca una clase para el manejo de la conexión a la base de datos teniendo una instancia interna de PDO.
- GatorV hace la observación que no se hace nada más allá de la implementación del patrón singleton. No es necesaria la sobre-escritura de los métodos si solo se va a ser un paso de parámetros hacia PDO. Propone, en su lugar, hacer herencia de PDO.
- Y aquí intervienes diciendo eso --la herencia-- no es posible porque un constructor público, obligado por la herencia, no cumple con el patrón singleton. Te cito (negritas de mi parte).

Cita:
Iniciado por atrianaster Ver Mensaje
Explico, esta clase Database tiene implementado el Patrón Singleton y no puede extender de PDO directamente ya que el constructor de PDO es público y uno de los requisitos del Patrón Singleton, es que el constructor debe ser privado.
Correcta observación... aunque "cerrada". Te propongo ser más flexible con aquello de "el constructor deber ser privado". Lo que importa es controlar el alcance del constructor a manera de impedir se pueda obtener una instancia directa de la clase (por medio de new). Si bien ese control lo obtienes desde el lenguaje declarando el constructor como privado o protegido, igual puedes controlarlo lanzado un error de ejecución (que igual la solución te lo proporciona el lenguaje ).


Con el código que propongo obtienes el mismo comportamiento que si declararas el método como privado, cumpliendo así con "los requisitos del patrón singleton". Hasta el mensaje de error es el mismo; si camina como pato, hace como pato y se ve como pato ...

El único detalle que quedaría es hacer saber ese constructor es privado no es accesible a herramientas como un IDE y/o la generación de la documentación de la API. Para ello, mencioné, debería resolverse con la etiqueta "@access" en el "docblock" correspondiente.


Entonces, ¿en verdad no te entendí?; ¿serías tan amable de explicarme en qué?. ¿O fuiste tú quien no me entendió?; ¿me expliqué mejor ahora? ...

Y sobre la molestia, diré: triste es, una broma explicar.
__________________
I ♥ The Music!

Última edición por maturano; 06/05/2010 a las 00:16 Razón: Que ironía. Estaba llamando privado al constructor...