2010-06-11 12 views
1

Pourquoi la syntaxe est-elle la même?pourquoi existe-t-il une syntaxe différente?

Par exemple

# Example 1 
if($myCondition == true) : 
    #my code here 
endif; 

if($myCondition == true) { 
    #my code here 
} 

# Example 2 
foreach($films as $film) : 
    #my code here 
endforeach; 

foreach($films as $film) { 
    #my code here 
} 

Aussi j'ai utilisé <?= depuis des siècles maintenant et je comprends maintenant que est dépréciée et je devrais utiliser <?php echo Est-ce le cas et pourquoi? C'est beaucoup plus énervant d'avoir à l'écrire à chaque fois.

Que pensez-vous?

+0

Si vous devez écrire ' 'plus que quelques fois, utilisez un moteur de template. Avoir du code html et php dans le même fichier est extrêmement sale. – ThiefMaster

+1

@ThiefMaster PHP en lui-même est un moteur de template. Que vous écrivez '{$ smartySucks}' ou ' 'n'a pas d'importance. Il devient seulement sale quand vous commencez à mélanger la logique dans le modèle. – Gordon

+0

@Gordon Quelque chose à propos de votre exemple semble biaisé: p –

Répondre

1

La syntaxe endif, endforeach, etc du côlon est connue sous le nom Alternative Syntax. Je ne peux pas dire avec certitude pourquoi cette fonctionnalité existe, mais seulement qu'elle le fait et qu'elle est supportée. Je peux dire que j'ai remarqué que la syntaxe alternative est plus utilisée à des fins de création de modèles où il est facile de choisir un endif/endforeach plutôt qu'un accolade de fermeture au milieu du balisage HTML.

Le <?= est connu sous le nom d'étiquette courte ouverte. Vous pouvez probablement trouver toutes les informations dont vous avez besoin ici Are PHP short tags acceptable to use?

1

Pourquoi le résultat devrait-il être différent? Celui sans les parenthèses est appelé alternative syntax for control structures et est très utile, par ex. lorsqu'il s'agit de HTML.

<?php echo est beaucoup plus facile à transporter, car les balises courtes ouvertes peuvent être désactivées et sont désactivées par défaut depuis PHP 5.3

+0

désactivé par défaut, mais est-il toujours supporté ou est-il obsolète? – Lizard

+0

@Lizard est obsolète. Mais il ne sera pas supprimé. Voir les liens donnés dans http://stackoverflow.com/questions/2413661/php6-is-short-open-tag-removed-or-deprecated-or-neither – Gordon