Lo que es:? En PHP 5.3? [duplicar]
-
23-09-2019 - |
Pregunta
Duplicar posibles: ¿Cuáles son los operadores de PHP y “?” “:” se llama y qué es lo que hacen
?
<?PHP
require __DIR__.'/c.php';
if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
throw new Exception('Error');
$c();
?>
Twitto utiliza varias características nuevas disponibles a partir de PHP 5.3:
- La DIR constante
- El operador?:
- Las funciones anónimas
-
¿Qué significa el número 2 ver con el ? en PHP 5.3
-
Además, ¿qué quieren decir con funciones anónimas? No era que algo que ha existido por un tiempo?
Solución
?:
es una forma de que el operador condicional que estaba disponible anteriormente sólo como:
expr ? val_if_true : val_if_false
En 5.3 es posible dejar de lado la parte media, por ejemplo, expr ?: val_if_false
que es equivalente a:
expr ? expr : val_if_false
Desde el manual de :
A partir de PHP 5.3, es posible dejar de lado la parte media del operador condicional. declaraciones de expresión
expr1 ?: expr3
expr1
si evalúaexpr1
aTRUE
yexpr3
lo contrario.
Otros consejos
El operador ?:
es la condicional operador (a menudo referido como el operador ternario):
Las evalúa la expresión
(expr1) ? (expr2) : (expr3)
aexpr2
si evalúaexpr1
a true , y siexpr3
evalúaexpr1
a false .
En el caso de:
expr1 ?: expr2
la expresión se evalúa el valor de expr1
si expr1
es true y expr2
de otro modo:
A partir de PHP 5.3, es posible dejar de lado la parte media del operador ternario. declaraciones de expresión
expr1 ?: expr3
expr1
if Evalúaexpr1
a TRUE , yexpr3
lo contrario.
A partir de PHP 5.3, es posible dejar de lado la parte media del operador ternario. expr1 expresión:? rendimientos expr3 EXPR1 si evalúa como TRUE, EXPR1 y expr3 lo contrario.
Las funciones anónimas: No, no existía antes 5.3.0 (ver la primera nota debajo de los ejemplos), al menos en esta forma:
function ($arg) { /* func body */ }
La única manera era create_function()
, que es más lento, bastante engorroso y propenso a errores (debido al uso de cadenas para las definiciones de función).