启动和关闭PHP语句的“正确”方法是什么?

时间:2009-05-16 05:18:58

标签: php

以下PHP变体是否存在任何差异或相关风险?

<? echo "hello world!"; ?>

<?php echo "hello world!"; ?>

<?="hello world!"?>

此外,是否有必要使用?>

关闭所有脚本

3 个答案:

答案 0 :(得分:15)

不同之处在于某些服务器可能会通过short_open_tag禁用第一个和最后一个示例。因此,如果您希望代码尽可能具有可移植性,则应使用完整的<?php,否则当您将代码移动到新服务器时,您可能会发现它无法按预期工作。如果您尝试执行<?xml类型声明,也可以使用短标记导致冲突。就安全性而言,如果有人决定关闭short_open_tag,使用短标签在理论上会很危险;然后,使用该标记的代码将是纯文本并向所有人广播(请查看注释以获取更多信息)

至于你的另一个问题,省略结束标记是为了防止空格意外地输出到浏览器,因为这会弄乱一些脚本,特别是那些试图输出任何类型的标题的脚本。这就是Zend Programming Guide建议不关闭PHP标记的原因。

现在我已经完成了所有这些工作,除非我正在开发一些开源的东西,我个人使用短开放标签并关闭所有PHP标签。这是因为我通常控制着自己的环境,我认为a)<?=太方便了,b)如果你打开一些东西你应该关闭它。然而,“最佳实践”并不真正同意这一点。

答案 1 :(得分:6)

当您不控制托管时,可移植性非常重要。例如,当我写了一些托管在我学院托管上的PHP程序时,他们工作正常,直到他们改变配置以禁止他们打破了一堆页面的语法。

即使它当时有效,如果您无法控制托管,也无法保证。

答案 2 :(得分:2)

短开标签。通常会提到可能未启用此选项。我从来没有真正看到过这种情况,但我想这是可能的。您可能需要移动托管服务提供商或其他东西。一般来说,我只会使用简短形式。如果我需要更改它,那么它是一个相当简单的搜索并替换为更改

更重要的是,您编写的PHP多久需要是可移植的,而不仅仅是在您的特定应用程序上工作?

唯一真正的考虑因素(imho)是XML处理指令,如果输出XHTML可能会出现问题,尽管我从未见过这样做的理由而不是严格的或过渡的HTML。