Funciones
Funciones
Sintaxis
function sumar($num1, $num2){
return $num1 + $num2;}
echo sumar(10,4);
Paso por valor y referencia
// Paso por valor y por referencia
$numero = 10;
function porValor($valor){
// valor es una copia por lo que numero seguira valiendo lo mismo despues
$valor = $valor + 2;
}
function porReferencia(&$valor){
// Se pasa la referencia, se modifica la original tambien si se modifica
$valor = $valor + 2;
}
porValor($numero);
echo $numero . "\n";
porReferencia($numero);
echo $numero . "\n";
Recursividad
// Recursividad
function factorial($n){
if($n === 1){
return 1;
}else{
echo $n . " X ";
return $n * factorial($n - 1);
}
}
echo "\n". factorial(5);
Named params
En todos los lenguajes importa el orden de los parámetros, pero podemos invertir el orden usando named params
Ejemplo
function palabraYnumero(string $palabra, int $numero){
echo "La palabra es $palabra y el numero es $numero";
}
palabraYnumero(numero:20, palabra: 'Yo');
El orden de los parametros es incorrecto pero no importa porque estamos indicando el nombre de cada parametro
… en funciones
Los 3 puntos en una función indica que es un array el campo que se recibe.
function sum(...$nums){
return array_sum($nums);
}
echo sum(1,2,3,4);
// output [1, 2, 3, 4];
Llamar a una función de manera dinámica
Cuando una variable tiene unos paréntesis delante, php busca una función con ese mismo nombre, en el scope actual.
function sum(...$nums){
var_dump($nums);
return array_sum($nums);
}
$x = 'sum';
$x(1,2,3,4);
Llamar a una función que todavía no ha sido definida
routeToController($uri, $routes);
function routeToController($uri, $routes): void
{
if (array_key_exists($uri, $routes)){
require $routes[$uri];
} else{
abort();
}
}
En PHP, es posible llamar a una función que aún no ha sido definida gracias a la fase de análisis que realiza el intérprete del lenguaje antes de la ejecución real del código. Este proceso se conoce como “análisis anticipado” o “análisis previo”. Durante esta fase, el intérprete examina el código para compilarlo y resolver referencias a funciones y variables antes de ejecutar el script.
Cuando se llama a una función que aún no ha sido definida durante este análisis anticipado, el intérprete PHP genera una advertencia (E_WARNING), pero no detiene la ejecución del script. En su lugar, espera hasta que llegue al punto en el que la función se define para poder ejecutarla correctamente. Esto puede resultar en un comportamiento impredecible o errores si no se define la función en ningún lugar del script.
Por lo tanto, aunque es posible llamar a una función que aún no ha sido definida en PHP, es una buena práctica definir todas las funciones necesarias antes de llamarlas para evitar advertencias y garantizar un comportamiento predecible del código.