Y a-t-il des différences entre...
if ($value) {
}
...et...
if ($value):
endif;
?
Y a-t-il des différences entre...
if ($value) {
}
...et...
if ($value):
endif;
?
Ils sont identiques, mais le second est idéal si votre code est de type MVC et que vous ne voulez pas avoir beaucoup d'échos dans votre code. Par exemple, dans mon .phtml
(Zend Framework), je vais écrire quelque chose comme ceci :
<?php if($this->value): ?>
Hello
<?php elseif($this->asd): ?>
Your name is: <?= $this->name ?>
<?php else: ?>
You don't have a name.
<?php endif; ?>
@ alex - Je pense que oui. Cependant, si vous cherchez stringtemplate (en un seul mot) sur Google, vous verrez qu'ils utilisent une syntaxe très similaire pour résoudre ce même problème. Je suppose que l'on pourrait dire que le code est plus propre ? Peut-être que c'est commun pour les templates/langues interprétées...
@alex Cela fonctionnera aussi avec des crochets frisés, mais au moins personnellement je trouve cette façon plus claire dans des choses comme ça. Parce qu'ils savent que c'est la fin d'un if, et non la fin d'une boucle ou autre chose. Je pense que vous avez aussi endfor et endwhile ou quelque chose de similaire.
Je n'utiliserais pas le <?= ?> parce qu'il n'est pas pris en charge par tous les serveurs, notamment ceux de l'hébergement mutualisé qui ne permettent pas de modifier le php.ini.
Personnellement, je déteste vraiment la syntaxe alternative. Ce qui est bien avec les accolades, c'est que la plupart des IDE, vim, etc. ont une mise en évidence des accolades. Dans mon éditeur de texte, je peux double-cliquer sur une accolade et l'ensemble du morceau est mis en surbrillance, ce qui me permet de voir très facilement où il commence et où il se termine.
Je ne connais pas un seul éditeur qui puisse mettre en évidence les endif, endforeach, etc.
Il est censé être utilisé dans les modèles PHP, où le début et la fin du bloc sont séparés par un morceau de langue étrangère. Si votre IDE comprend suffisamment bien PHP pour analyser cela, il devrait également mettre en évidence les éléments suivants endif
comme fin de bloc correctement. Si ce n'est pas le cas, vous n'achetez rien en utilisant la fonction }
car il ne correspondra pas de toute façon.
Je pense que ça dit tout :
cette syntaxe alternative est excellente pour améliorer la lisibilité (à la fois pour PHP et HTML !) dans les situations où vous vous avez un mélange des deux.
http://ca3.php.net/manual/en/control-structures.alternative-syntax.php
Lorsque l'on mélange HTML et PHP, l'alternative sytnax est beaucoup plus facile à lire. Dans les documents PHP normaux, la syntaxe traditionnelle doit être utilisée.
Merci. J'ai mis à jour cette réponse. Elle tourne un peu autour du pot, mais peut être utile.
Ils sont en effet tous deux identiques, sur le plan fonctionnel.
Mais si le endif
s'éloigne trop du correspondant if
Je pense que c'est une bien meilleure pratique de lui donner un commentaire de référencement. Pour que vous puissiez facilement retrouver l'endroit où il a été ouvert. Quelle que soit la langue :
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
Cela s'applique en fait à toute "fermeture" analogue ! ;)
De plus, en général, les éditeurs sont plus à l'aise avec les accolades, dans le sens où ils peuvent vous indiquer l'endroit où le texte a été ouvert. Mais même cela ne rend pas les commentaires descriptifs moins valables.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
La seconde méthode existe depuis PHP4, si ce n'est plus tôt.
0 votes
Voir aussi : stackoverflow.com/questions/381259/
1 votes
La plupart des réponses n'abordent pas vraiment le point principal : ce qui fonctionne mieux lorsque vous regardez du code et qu'il y a beaucoup de commandes de fermeture telles que
} } } }
(ce qui peut être fait avecendif
aussi) et vous voulez savoir où ils étaient ouverts ? La réponse est ni l'un ni l'autre . C'est en gros le première "règle" des principes de conception de python .7 votes
Évidemment
{}
est meilleur et: endif;
est une atrocité qui n'existerait pas si la vie était juste. Avec un bon éditeur de texte, vous disposez d'un raccourci clavier pour faire correspondre les parenthèses, afin de passer de l'ouverture à la fermeture ou vice versa. Une telle chose n'existe pas et ne pourra jamais exister pour l'affreux: endif;
la syntaxe.3 votes
@developerwjk comment cela peut-il ne jamais exister ?
0 votes
@developerwjk, c'est utile...
<?php if(TRUE): ?> test <?php else: ?> test2 <?php endif; ?>
0 votes
@Yousha Aleayoub, Tant que c'est limité à une seule ligne, ce n'est pas si mal je suppose.
0 votes
@YoushaAleayoub "utile" semble impliquer que vous ne pouvez pas faire cela avec des parenthèses, mais vous pouvez certainement le faire, et j'irais même jusqu'à dire que cela a l'air plus propre, personnellement.
<?php if(TRUE) { ?> test <?php } else { ?> test2 <?php } ?>