2010-06-11 102 views
1

为什么会有不同的语法相同的结果?为什么会有不同的语法相同的结果?

例如

# 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 
} 

而且我一直在使用<?=的年龄了,我现在明白了,已经过时,我应该使用<?php echo是这样的话,为什么?每次都要写出来更麻烦。

你的想法是什么?

+0

默认情况下,停用的原因是你必须写''多于几次,使用模板引擎。在相同的文件中有HTML和PHP代码是非常肮脏的。 – ThiefMaster 2010-06-11 11:41:19

+1

@ThiefMaster PHP本身就是一个模板引擎。无论你是编写'{$ smartySucks}'还是'<?php echo $ someVar; ''没关系。只有当你开始将逻辑混合到模板中时它才会变脏。 – Gordon 2010-06-11 12:02:37

+0

@戈登有关你的例子似乎有偏见:p – 2010-06-11 12:11:16

回答

1

冒号endif,endforeach等语法被称为Alternative Syntax。我无法确定为什么这个功能存在,只是它支持而已。我可以说,我已经注意到了用于模板目的的替代语法,它可以很容易地挑选endif/endforeach,而不是在HTML标记中间的大括号。

<?=被称为短开标签。您可能可以找到您需要的关于其在此处使用的所有信息Are PHP short tags acceptable to use?

1

为什么结果应该不同?没有括号的那个称为alternative syntax for control structures,并且非常有用,例如,在处理HTML时。

<?php echo更加便携,因为较短的开放标签可以被禁用,因为PHP 5.3

+0

默认情况下禁用,但仍支持或不推荐使用? – Lizard 2010-06-11 11:32:47

+0

@Lizard它已被弃用。但它不会被删除。请参阅http://stackoverflow.com/questions/2413661/php6-is-short-open-tag-removed-or-deprecated-or-ne-中给出的链接 – Gordon 2010-06-11 12:05:08

相关问题