emeka mba
¿Cómo se escribe una función de flecha de PHP con expresiones de varias líneas?
Ejemplo de una sola línea de JavaScript:
const dob = (age) => 2021 - age;
Equivalente de PHP de una sola línea:
$dob = fn($age) => 2021 - $age;
Ejemplo de múltiples líneas de Javascript:
const dob = (age) => {
if (!age) {
return null;
}
const new_age = 2021 - age;
console.log("Your new age is " + new_age);
return new_age;
}
¿Cuál es el equivalente de PHP para varias líneas dentro de una función de flecha?
Agujero negro
Funciones de flecha en PHP tiene la forma fn (argument_list) => expr
. Solo puede tener una sola expresión en el cuerpo de la función.
Puede escribir la expresión en varias líneas sin problema:
fn($age) =>
$age
? 2021 - $age
: null
Si realmente necesita varias expresiones, simplemente puede usar función anónima. Los cierres no son automáticos como lo son con funciones de flecha, pero si no lo necesitas, da exactamente el mismo resultado.
$dob = function ($age) {
if (!$age) { return null; }
$new_age = 2021 - ^$age;
echo "Your new age is ". $new_age;
return $new_age;
}
-
Esta sigue siendo una sola expresión y no múltiple. Actualicé mi pregunta.
– Emeka Mba
26 de enero de 2021 a las 17:08
-
@EmekaMbah Pensé que la primera línea de mi respuesta era bastante clara: no puede tener más de una sola expresión en el cuerpo de una función de flecha en PHP. Solo usa una función estándar para eso.
– Agujero negro
26 de enero de 2021 a las 17:12
-
De acuerdo. Entiendo. ¿Sabe si PHP planea hacer esto posible ya que la expresión única no suele ser el caso?
– Emeka Mba
26 de enero de 2021 a las 17:15
-
@EmekaMbah No, no he visto ningún RFC sobre esto. Pero eso realmente no es necesario, especialmente si no necesita ninguna captura como en su pregunta actualizada:
function ($age) { … }
hace lo mismo que su ejemplo de JavaScript.– Agujero negro
26 de enero de 2021 a las 17:19
el uso de múltiple expresiones no está permitido, de acuerdo con la RFC. Cubre la asignación de una sola expresión. La extensión se analiza más adelante en el RFC, pero no se implementa
¿Qué estás preguntando exactamente? ¿Cómo poner la expresión en una línea separada o tener múltiples expresiones? En PHP, solo puede tener una expresión, pero puede escribirla en varias líneas (siempre que sea una sola expresión, como su ejemplo de “múltiples líneas”)
– M.Eriksson
26 de enero de 2021 a las 15:15
@MagnusEriksson Estoy preguntando cómo poner múltiples expresiones o líneas de código en una función de flecha. Actualicé mi pregunta. Si entiendes la idea de una función de flecha, te ayudará.
– Emeka Mba
26 de enero de 2021 a las 17:10
Ojalá fuera posible con PHP, pero no lo es. Solo se permite una línea (expresión).
– Robo Robok
8 de junio de 2021 a las 14:39