En primer lugar, está utilizando el término "polimorfismo" totalmente equivocado. El polimorfismo es un concepto en la programación orientada a objetos, y no tiene nada que ver con la cantidad variable de argumentos en las funciones.
En mi experiencia, todo lo que func_get_args
le permite hacer es agregar un poco de azúcar sintáctico.
Piense en una función que puede tomar cualquier número entero y devolver su suma. (Estoy haciendo trampa, como esto ya existe en array_sum
. Pero copiar es bueno si mantiene el ejemplo simple). Se podía hacerlo de esta manera:
// you can leave "array" out; I have it because we should be getting one here
function sum1(array $integers) {
return array_sum($integers);
}
Ahora se llamarían a esto, así:
$sum = sum1(array(1));
$sum = sum1(array(1, 2, 3, 4));
Esto no es muy bonita.Pero podemos hacer mejor:
function sum2() {
$integers = func_get_args();
return array_sum($integers);
}
Ahora se le puede llamar así:
$sum = sum2(1);
$sum = sum2(1, 2, 3, 4);
http://us2.php.net/manual/en/function.func-get-arg.php Desplácese hasta 'Examples', luego lea' User Contributed Notes' – drudge
'sprintf' y' max' son buenas ejemplos de funciones que pueden tratar con una cantidad arbitraria de argumentos. Por lo general, desea usarlo con parámetros escritos uniformemente. – mario
No quiere decir 'polimórfico': el término que está buscando es 'variadic': http://en.wikipedia.org/wiki/Variadic_function –