Ver Mensaje Individual
  #19 (permalink)  
Antiguo 05/03/2013, 15:10
Avatar de portalmana
portalmana
 
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 17 años, 2 meses
Puntos: 80
Respuesta: Sobrecarga en PHP POO

Este es un ejemplo de sobrecarga del Manual de PHP
Código PHP:
Ver original
  1. <?php
  2. class SobreCarga
  3. {
  4.     public function __call($metodo, $parametros)
  5.     {   if (method_exists($this, $metodo.sizeof($parametros))) return call_user_func_array(array($this, $metodo.sizeof($parametros)), $parametros);
  6.                 // Si la Funcion no Existe
  7.                 throw new Exception('Metodo Desconocido: '.get_class($this).'::'.$metodo);
  8.         }
  9.  
  10.         function Param2($a, $b) {
  11.                 echo "<br />Param2($a,$b)\n";
  12.         }
  13.  
  14.         function Param3($a, $b, $c) {
  15.                 echo "<br />Param3($a,$b,$c)\n";
  16.         }
  17. }
  18.  
  19. $o = new SobreCarga();
  20. $o->Param(4,5);
  21. $o->Param(4,5,6);
  22. $o->ParamX(4,5,6,7);
  23. ?>
  24. // La salida de este script seria:
  25. Param2(4,5)
  26. Param3(4,5,6)
  27. Fatal error: Uncaught exception 'Exception' with message 'Metodo Desconocido: SobreCarga::ParamX' in C:\xampp\htdocs\buscadorFullText\buscadorFullText\SobreCarga.php:7 Stack trace: #0 C:\xampp\htdocs\buscadorFullText\buscadorFullText\SobreCarga.php(22): SobreCarga->__call('ParamX', Array) #1 C:\xampp\htdocs\buscadorFullText\buscadorFullText\SobreCarga.php(22): SobreCarga->ParamX(4, 5, 6, 7) #2 {main} thrown in C:\xampp\htdocs\buscadorFullText\buscadorFullText\SobreCarga.php on line 7

Si ves desde fuera de la clase, esta sobrecarga simula bastante la tradicional, es decir utilizas el mismo método con distintos parámetros y se ejecutan distintos métodos aunque si ves la implementación aquí es donde se ve que no es una implementación normal de sobrecarga. A esto es a lo que supongo que dice el manual de php que no es normal.

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp