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;
?
Voici où vous pouvez le trouver dans la documentation officielle : PHP : Syntaxe alternative pour les structures de contrôle
Je pense que c'est particulièrement clair lorsque vous utilisez un mélange de if
s, for
et foreach
es dans les scripts de vue :
<?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; ?>
par opposition à :
<?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 } ?>
C'est particulièrement utile pour les longues déclarations de contrôle où il se peut que vous ne puissiez pas distinguer la déclaration supérieure de l'accolade inférieure.
Je pense que cela dépend vraiment de votre style de codage personnel. Si vous êtes habitué à C++, Javascript, etc., vous serez peut-être plus à l'aise avec la syntaxe {}. Si vous êtes habitué à Visual Basic, vous préférerez peut-être utiliser la syntaxe if : endif ;.
Je ne suis pas sûr que l'on puisse dire définitivement que l'un est plus facile à lire que l'autre - c'est une question de préférence personnelle. Je fais habituellement quelque chose comme ça :
<?php
if ($foo) { ?>
<p>Foo!</p><?php
} else { ?>
<p>Bar!</p><?php
} // if-else ($foo) ?>
Si c'est plus facile à lire que :
<?php
if ($foo): ?>
<p>Foo!</p><?php
else: ?>
<p>Bar!</p><?php
endif; ?>
est une question d'opinion. Je peux comprendre pourquoi certains pensent que la deuxième méthode est plus facile - mais seulement si vous n'avez pas programmé en Javascript et C++ toute votre vie :)
Les deux sont identiques.
Mais : Si vous souhaitez utiliser PHP comme langage de templating dans vos fichiers de vue (le V de MVC), vous pouvez utiliser cette syntaxe alternative pour distinguer le code php écrit pour implémenter la logique métier (parties contrôleur et modèle de MVC) de la logique graphique. Bien sûr, ce n'est pas obligatoire et vous pouvez utiliser la syntaxe de votre choix.
ZF utilise cette approche.
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 } ?>