Como han dicho que no quieres aprender acerca de respuesta aceptada taquigrafía y da buen ejemplo sobre la omisión de curly braces
, pero hay algo que añadir. Como puede ver, está bien omitir curly braces
en el caso de if ($x) echo 'foo';
. No hay nada de malo con el código, sin rendimiento u otros problemas y otros desarrolladores lo pueden leer.Y el ejemplo también se muestra que si se escribe
if ($x)
echo 'foo';
echo 'bar';
en lugar de
if ($x)
echo 'foo';
echo 'bar';
Puede encontrarse con resultados no deseados cuando bar
que se escribe, mientras que no desea que se imprima y si su código es lleno de tales declaraciones, entonces será más difícil para usted leer su propio código y aún más difícil para otros leerlo.
No quiero aprender sobre la taquigrafía Sólo quiero entender las condiciones sobre cuándo y dónde es posible omitir las llaves.
Estas cosas están estrechamente relacionados así que si realmente quiere entender donde es posible omitir llaves entonces que debería ser imprescindible que usted entiende o no al menos al tanto de la taquigrafía, han leído
- PHP Control Structures
- The PHP ternary conditional operators and expressions in general
Así que mi gran pregunta es: ¿Cuándo se puede omitir el cur ¿llaves y en qué estructura/lazo/función?
La llave no es necesaria, sin embargo, para la legibilidad y el mantenimiento, muchos desarrolladores consideran que es un mal estilo no incluirlos. Los enlaces previos 2 deberían proporcionarle la información necesaria para tomar sus propias decisiones cuando podría omitir la llave. por ejemplo, no hay nada de malo en seguir los fragmentos de código que hacen exactamente lo mismo.
Con llave de
if (PHP_VERSION_ID < 70000)
{
print "PHP >= 7.0 required yours is ";
print phpversion();
print "\n";
exit(1);
}
es igual que
if (PHP_VERSION_ID < 70000) :
print "PHP >= 7.0 required yours is ";
print phpversion();
print "\n";
exit(1);
endif;
o puede utilizar el operador punto
if (PHP_VERSION_ID < 80000)
(print "PHP >= 7.0 required yours is ") . (print phpversion()) . (print "\n") . exit(1);
Y se puede hacer uso del operador condicional ternario e incluso omitir if
si mismo, además de omitir las llaves
(PHP_VERSION_ID > 70000) ?: (print "PHP >= 7.0 required yours is ") . (print phpversion()) . (print "\n") . exit(1);
Ya que sólo imprimimos podemos acortar ese y tiras algunos print string functions
que estaban aquí en representación de más de una función en la declaración sin llaves
(PHP_VERSION_ID > 70000) ?: (print "PHP >= 7.0 required yours is " . phpversion() . "\n") . exit(1);
a partir de PHP 7 podemos utilizar nula coalescencia operador
(PHP_VERSION_ID > 70000) ?: null ?? (print "PHP >= 7.0 required yours is ".phpversion() . "\n") . exit(1);
Como se puede ver que hay muchas maneras de obtener exactamente el mismo resultado.Eso no solo aplica para este ejemplo if
, sino que también se puede practicar con structure/loop/function
. Entonces, no hay una respuesta para su gran pregunta . Uno debería considerar principalmente seguir.
- Es fácil de mantener el código que está escribiendo.
- ¿Puedes responder por ti mismo? Hay algo que ganas al omitir las llaves.
Por cierto, no es necesario poner un punto y coma después de un corchete de cierre. El significado sintáctico de esto es agregar una declaración vacía entre ellos. Esto es cierto para todos los lenguajes tipo C, a excepción de las declaraciones de 'struct' y' class' en C y C++. – Eric
Necesita aprender la diferencia entre las declaraciones y las expresiones para comprender cuándo curlys son omitibles. Y entonces una comprensión sólida de la cohesión de la expresión es necesaria aún. – mario
funciona exactamente como lo dijiste :) –