Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/05/2007, 00:29
Avatar de tozanni
tozanni
 
Fecha de Ingreso: mayo-2007
Ubicación: Seattle, WA
Mensajes: 62
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Paja mental con la herencia en PHP5

Estimado Yoguuu

La herencia multiple es una caracteristica que se agrego al C++ pero practicamente todos los lenguajes modernos han ido eliminando (PHP, Java, C#, Ruby etc.). Incluso la version "managed" de C++ de .NET ya no la soporta.

A grandes rasgos, la postura de la "comunidad" es que la HM causa mas problemas de los que resuelve. Tal vez el mas famoso es el de "colisiones de nombres". Ejemplo: Si tienes la clase Hijo extends Padre, Madre, y tanto padre como madre tienen un metodo llamado "trabajar", ¿Cual esperas que se use?

Normalmente la forma de hacer el diseño es heredar cuando la clase hija es una especializacion de la clase padre. Ejemplo, si la clase padre es DatabaseDriver, los hijos pueden ser MySQLDriver, OracleDriver etc. (Por cierto, si quieres ahorrar tiempo hay librerias que hacen esto). La clase Config no deberia formar parte de la jerarquia y posiblemente la otra tampoco. Cuando requieres el polimorfismo, lo que si puedes hacer es implementar multiples interfaces (el problema de los nombres ya no se da en este caso).

Te recomiendo que veas la libreria AdoDB o PearDB, para que veas como se han hecho los diseños de ese tipo de sistemas, incluso tal vez te gusten para usar en tu proyecto. Tambien te puede interesar el Creole, que es mas moderno y esta basado en la filosofia de ORM (mapeo objeto relacional).