Ver Mensaje Individual
  #21 (permalink)  
Antiguo 10/05/2010, 17:19
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

Cita:
Iniciado por danmichel Ver Mensaje
Mi última duda, como podría implementar el método query, que en dependencia de la variante que use invoque al método correspondiente. Pero lo que deseo es centralizarlo todo en el mismo método.
Eso se le conoce como Sobrecarga, por si no lo sabías, para que leas al respecto.

En PHP no es soportada la sobrecarga como en otros lenguajes, tendrías que simularla. La manera común y "documentada" es mediante el método mágico __call(), pero igual lo puedes hacer que un método público (query(), en este tu caso) llame a determinado método privado en función del número de argumentos pasados; esto lo sabrías con la función func_num_args(). En cualquier caso, tendrías que aplicar la lógica por tu cuenta.
www.php.net/__call
www.php.net/func_num_args

Deberías encontrar información al respecto en este mismo foro y en internet en general.


Por otra parte, se te sugirió heredar PDO precisamente para no sobreescribir los métodos si solo van a llamar al mismo método de PDO. Cuando heredas obtienes el mismo comportamiento de la clase padre. si no sobreescribes el método query(), al invocarlo tendrías la misma funcionalidad que con PDO; entendí por eso fue todo el asunto de la herencia.


Si tienes más lógica en tu método, más allá que del simple paso de parámetros, igual considera que podría no ser buena idea aquello de "tener todo centralizado en un solo método". Si el comportamiento va a ser distinto de acuerdo al paso de parámetros, podría ser buena idea hacer clara esa distinción manejando métodos públicos para cada caso. No tengo claro cuál sea tu objetivo, pero suele ser un error común de diseño el que pretendiendo tener una API simple se termine con código complejo, rebuscado, poco reusable y difícil de mantener. Solo, cuidado con ello.

Nuevamente, si tu código es tal cual lo presentas aquí, la sobre-escritura no es necesaria si se implementa la herencia.
__________________
I ♥ The Music!