valores - manejo de archivos en php ejemplos
Cómo trabajar con argumentos infinitos en una función(como el archivo de PHP()) (4)
¿Sabes cómo el isset()
PHP puede aceptar múltiples argumentos (sin límite alguno)?
Como puedo hacer:
isset($var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8,$var9,$var10,$var11);
//etc etc
¿Cómo podría hacer eso en mi propia función? ¿Cómo podría trabajar con infinitos argumentos pasados?
¿Cómo lo hicieron?
A partir de PHP 5.6 puedes usar el token " ... "
Ejemplo:
<?php
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4);
?>
Fuente: http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list
Llamar a func_get_args
dentro de su función devolverá una matriz de los argumentos pasados a PHP.
Puedes usar func_get_args()
, devolverá una matriz de argumentos.
function work_with_arguments() {
echo implode(", ", func_get_args());
}
work_with_arguments("Hello", "World");
//Outputs: Hello, World
func_get_args
hará lo que quieras:
function infinite_parameters() {
foreach (func_get_args() as $param) {
echo "Param is $param" . PHP_EOL;
}
}
También puede usar func_get_arg
para obtener un parámetro específico (está indexado a cero):
function infinite_parameters() {
echo func_get_arg(2);
}
Pero tenga cuidado de comprobar que tiene ese parámetro:
function infinite_parameters() {
if (func_num_args() < 3) {
throw new BadFunctionCallException("Not enough parameters!");
}
}
Incluso se pueden mezclar los parámetros func_*_arg
y regulares:
function foo($param1, $param2) {
echo $param1; // Works as normal
echo func_get_arg(0); // Gets $param1
if (func_num_args() >= 3) {
echo func_get_arg(2);
}
}
Pero antes de usarlo, piensa si realmente quieres tener parámetros indefinidos. ¿No sería suficiente una matriz?