endif else php syntax

else - endif php



Diferencia entre if(){} y if(): endif; (18)

Al final, no desea buscar la siguiente línea y luego tener que adivinar dónde comenzó:

<?php } ?>

Técnicamente y funcionalmente son lo mismo.

¿Hay alguna diferencia entre ...

if ($value) { }

...y...

if ($value): endif;

?


Ambos son lo mismo.

Pero: si desea utilizar PHP como su lenguaje de plantillas en sus archivos de vista (la V de MVC) puede usar esta sintaxis alternativa para distinguir entre el código php escrito para implementar la lógica de negocios (partes de Controlador y Modelo de MVC) y lógica. Por supuesto, no es obligatorio y puede usar la sintaxis que desee.

ZF usa ese enfoque.



Creo que es particularmente más claro cuando estás usando una combinación de s, for s y foreach es en los scripts de vista:

<?php if ( $this->hasIterable ): ?> <h2>Iterable</h2> <ul> <?php foreach ( $this->iterable as $key => $val ):?> <?php for ( $i = 0; $i <= $val; $i++ ): ?> <li><?php echo $key ?></li> <?php endfor; ?> <?php endforeach; ?> </ul> <?php elseif ( $this->hasScalar ): ?> <h2>Scalar</h2> <?php for ( $i = 0; $i <= $this->scalar; $i++ ): ?> <p>Foo = Bar</p> <?php endfor; ?> <?php else: ?> <h2>Other</h2> <?php if ( $this->otherVal === true ): ?> <p>Spam</p> <?php else: ?> <p>Eggs</p> <?php endif; ?> <?php endif; ?>

Opuesto a:

<?php if ( $this->hasIterable ){ ?> <h2>Iterable</h2> <ul> <?php foreach ( $this->iterable as $key => $val ){?> <?php for ( $i = 0; $i <= $val; $i++ ){ ?> <li><?php echo $key ?></li> <?php } ?> <?php } ?> </ul> <?php } elseif ( $this->hasScalar ){ ?> <h2>Scalar</h2> <?php for ( $i = 0; $i <= $this->scalar; $i++ ){ ?> <p>Foo = Bar</p> <?php } ?> <?php } else { ?> <h2>Other</h2> <?php if ( $this->otherVal === true ){ ?> <p>Spam</p> <?php } else { ?> <p>Eggs</p> <?php } ?> <?php } ?>

Esto es especialmente útil para declaraciones de control largas en las que es posible que no pueda ver la declaración superior desde el botón de abajo.


Creo que es una cuestión de preferencia. Yo personalmente uso:

if($something){ $execute_something; }


Creo que esto lo dice todo:

esta sintaxis alternativa es excelente para mejorar la legibilidad (¡tanto para PHP como para HTML!) en situaciones en las que tienes una combinación de ellas.

http://ca3.php.net/manual/en/control-structures.alternative-syntax.php

Al mezclar HTML y PHP, el sytnax alternativo es mucho más fácil de leer. En documentos PHP normales, se debe usar la sintaxis tradicional.


Creo que realmente depende de tu estilo de codificación personal. Si está acostumbrado a C ++, Javascript, etc., puede sentirse más cómodo con la sintaxis {}. Si está acostumbrado a Visual Basic, puede usar if: endif; sintaxis.

No estoy seguro de que uno pueda decir definitivamente que uno es más fácil de leer que el otro: es una preferencia personal. Normalmente hago algo como esto:

<?php if ($foo) { ?> <p>Foo!</p><?php } else { ?> <p>Bar!</p><?php } // if-else ($foo) ?>

Si eso es más fácil de leer que:

<?php if ($foo): ?> <p>Foo!</p><?php else: ?> <p>Bar!</p><?php endif; ?>

es una cuestión de opinión. Puedo ver por qué algunos sentirían que la 2da vía es más fácil, pero solo si no has estado programando en Javascript y C ++ toda tu vida. :)


De hecho, ambos son lo mismo, funcionalmente.

Pero si el endif está endif demasiado del corresponsal, creo que es una práctica mucho mejor darle un comentario de referencia. Para que pueda encontrar fácilmente dónde estaba abierto. No importa el idioma que sea:

if (my_horn_is_red or her_umbrella_is_yellow) { // ... // let''s pretend this is a lot of code in the middle foreach (day in week) { sing(a_different_song[day]); } // ... } //if my_horn_is_red

¡Eso en realidad se aplica a cualquier "cosa de cierre" análoga! ;)

Además, en general, los editores manejan mejor las llaves, en el sentido de que pueden indicarle dónde estaba abierto. Pero incluso eso no hace que los comentarios descriptivos sean menos válidos.


En nuestra empresa, la forma preferida para manejar HTML es:

<? if($condition) { ?> HTML content here <? } else { ?> Other HTML content here <? } ?>

Al final, realmente se trata de elegir uno y seguir con él.


No hay diferencia técnica entre las dos sintaxis. La sintaxis alternativa no es nueva; fue compatible al menos desde PHP 4, y tal vez incluso antes.

Es posible que prefiera la forma alternativa porque indica explícitamente qué estructura de control está finalizando: endwhile , por ejemplo, solo puede terminar un bloque while , mientras que si encuentra un paréntesis, podría estar cerrando cualquier cosa.

Sin embargo, es posible que prefiera la sintaxis tradicional si utiliza un editor que tenga soporte especial para llaves en otras sintaxis tipo C. Vim, por ejemplo, admite varias pulsaciones de teclas para navegar para unir llaves y para los comienzos y finales de los bloques delimitados por refuerzos. La sintaxis alternativa rompería esa característica del editor.


Personalmente prefiero hacerlo en dos secciones separadas pero dentro del mismo PHP como:

<?php if(question1) { $variable_1=somehtml; } else{ $variable_1=someotherhtml; } if(question2) { $variable_2=somehtml2; } else{ $variable_2=someotherhtml2; } etc. $output=<<<HERE htmlhtmlhtml$variable1htmlhtmlhtml$varianble2htmletcetcetc HERE; echo $output; ?>

Pero tal vez es más lento?


Personalmente, realmente odio la sintaxis alternativa. Una cosa buena acerca de los refuerzos es que la mayoría de los IDE, vim, etc. tienen resaltado de paréntesis. En mi editor de texto puedo hacer doble clic en un corchete y resaltará todo el fragmento para que pueda ver dónde termina y comienza muy fácilmente.

No conozco un solo editor que pueda resaltar endif, endforeach, etc.


Siento que ninguna de las respuestas preexistentes identifica completamente la respuesta aquí, así que voy a articular mi propia perspectiva. Funcionalmente, los dos métodos son iguales. Si el programador está familiarizado con otros idiomas siguiendo la sintaxis C, entonces probablemente se sentirán más cómodos con los refuerzos, o si php es el primer idioma que están aprendiendo, se sentirán más cómodos con la sintaxis if endif , ya que parece más cercano al lenguaje regular.

Si eres un programador realmente serio y necesitas hacer las cosas rápido, entonces creo que la sintaxis de llaves es superior porque ahorra tiempo escribiendo

if(/*condition*/){ /*body*/ }

comparado con

if(/*condition*/): /*body*/ endif;

Esto es especialmente cierto con otros bucles, por ejemplo, un foreach donde terminarías escribiendo 10 caracteres adicionales. Con llaves, solo necesita escribir dos caracteres, pero para la sintaxis basada en palabra clave debe escribir una palabra clave adicional para cada bucle y declaración condicional.


Solía ​​usar corchetes para condiciones "if, else". Sin embargo, encontré "if (xxx): endif;" es más semántico si el código está muy envuelto y es más fácil de leer en cualquier editor.

Por supuesto, muchos editores son capaces de reconocer y resaltar trozos de código cuando se seleccionan los corchetes. Algunos también funcionan bien en el par "if (xxx): endif" (p. Ej., NetBeans)

Personalmente, recomendaría "if (xxx): endif", pero para la verificación de condición pequeña (por ejemplo, solo una línea de código), no hay muchas diferencias.


Solía ​​usar las llaves, pero ahora prefiero usar esta sintaxis alternativa de mano corta debido a la legibilidad y accesibilidad del código.


Son los mismos, pero el segundo es excelente si tienes MVC en tu código y no quieres tener muchos ecos en tu código. Por ejemplo, en mis archivos .phtml (Zend Framework) escribiré algo como esto:

<?php if($this->value): ?> Hello <?php elseif($this->asd): ?> Your name is: <?= $this->name ?> <?php else: ?> You don''t have a name. <?php endif; ?>


Todo depende, personalmente prefiero la sintaxis tradicional con ecos y muchas sangrías, ya que es mucho más fácil de leer.

<?php if($something){ doThis(); }else{ echo ''<h1>Title</h1> <p>This is a paragraph</p> <p>and another paragraph</p>''; } ?>

Estoy de acuerdo en que la sintaxis alt es más clara con las diferentes cláusulas finales, pero realmente me cuesta mucho lidiar con ellas sin la ayuda del resaltado del editor de texto, y no estoy acostumbrado a ver un código "condensado" como este:

<?php if( $this->isEnabledViewSwitcher() ): ?> <p class="view-mode"> <?php $_modes = $this->getModes(); ?> <?php if($_modes && count($_modes)>1): ?> <label><?php echo $this->__(''View as'') ?>:</label> <?php foreach ($this->getModes() as $_code=>$_label): ?> <?php if($this->isModeActive($_code)): ?> <strong title="<?php echo $_label ?>" class="<?php echo strtolower($_code); ?>"><?php echo $_label ?></strong>&nbsp; <?php else: ?> <a href="<?php echo $this->getModeUrl($_code) ?>" title="<?php echo $_label ?>" class="<?php echo strtolower($_code); ?>"><?php echo $_label ?></a>&nbsp; <?php endif; ?> <?php endforeach; ?> <?php endif; ?> </p> <?php endif; ?>


Usaría la primera opción si fuera posible, independientemente de la nueva opción. La sintaxis es estándar y todos lo saben. También es compatible con versiones anteriores.