Empecé redactando una pregunta: "¿Cuál es la mejor manera de realizar pruebas unitarias en un constructor (por ejemplo, __construct() en PHP5)", pero al leer las preguntas relacionadas, vi varios comentarios que parecían sugerir que establecer variables miembro o realizar cualquier operación complicada en el constructor son no-nos.¿Qué cosas no se hacen mejor en un constructor?
El constructor de la clase en cuestión toma un parámetro, realiza algunas operaciones en él (asegurándose de que pasa una prueba de olfateo y transformándolo si es necesario), y luego lo guarda en una variable miembro.
pensé que los beneficios de hacerlo de esta manera fueron:
1) que el código de cliente siempre sería seguro de tener un valor para esta variable miembro cada vez que se crea una instancia de un objeto de esta clase, y
2) se ahorra un paso en código de cliente (uno de los cuales podría ser concebiblemente perdida), por ejemplo,
$Thing = new Thing;
$Thing->initialize($var);
cuando podríamos hacer esto
$Thing = new Thing($var);
y listo.
¿Es esto un no-no? Si es así, ¿por qué?
En ese caso, prefiero pasar en una instancia de dbclass, o utilizarlo como un producto único, en lugar de extender la clase en si. – Ross
Sí, hay formas de evitarlo, pero esto es solo un ejemplo. –
Si no deseaba esa funcionalidad, puede anular el constructor en el objeto de usuario. Además, algunos idiomas, como C#, no heredan el constructor en absoluto. –