22/09/2009, 19:00
|
| | Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 11 meses Puntos: 0 | |
Respuesta: Sobrecarga / Argumentos variables Hola, la sobrecarga la podés lograr con el método mágico __call, aca va un ejemplo, no tiene mucha utilidad pero creo que es gráfico ;)
<?php
class Persona {
public function __call($metodo, $parametros) {
if (method_exists($this, $metodo.sizeof($parametros))) {
return call_user_func_array(array($this, $metodo.sizeof($parametros)), $parametros);
}
throw new Exception('Método desconocido'.get_class($this).'::'.$metodo);
}
function datos0() {
echo 'Hola soy una Persona';
}
function datos1($nombre){
echo 'Hola soy una persona y me llamo ' . $nombre;
}
function datos2($nombre, $apellido){
echo 'Hola soy una persona y me llamo ' . $nombre . ' ' . $apellido;
}
function datos3($nombre, $apellido, $direccion){
echo 'Hola soy una persona y me llamo ' . $nombre . ' ' . $apellido . ' y vivo en ' . $direccion;
}
}
$persona = new Persona();
$persona->datos();
$persona->datos('Juan');
$persona->datos('Juan', 'Perez');
$persona->datos('Juan', 'Perez', 'Wall Street 1293');
Lo que no se puede lograr con este ejemplo es un overload para igual número de argumentos pero donde recibamos tipos de objetos diferentes (type hinting), tal como lo hace Java por ej
public funcion overload1(miClase $param)
{
}
public function overload2(miClase2 $param)
{
}
Saludos
Sergio Gabriel Rodriguez
3trex |