【问题标题】:Why does Symfony recommend turning php_short_tags off为什么 Symfony 建议关闭 php_short_tags
【发布时间】:2011-12-15 05:58:49
【问题描述】:

我是第一次安装 Symfony2 框架,网络配置屏幕说要关闭 php 短标签。除了与 xml 冲突或服务器不兼容的论点之外,还有什么原因吗?任何特定于 Symfony 的问题?

【问题讨论】:

    标签: php symfony php-shorttags


    【解决方案1】:

    一般来说,从不使用short_tags 不是一个好主意,主要是因为服务器不兼容。

    服务器不兼容

    并非每个 PHP 服务器都启用了short_tags。因此,如果您在项目中的任何地方使用短标签,并且在未来的某一天碰巧将它放在禁用短标签的服务器上,那么您的网站现在就坏了。您必须检查您的代码并在服务器上查找/替换或启用短标签,无论如何您可能无权这样做。

    Symfony

    Symfony 提出了几个最佳实践建议。它们不一定会影响使用 Symfony 的开发,但它们是许多专业开发人员遵循的良好实践。不使用short_tags是件好事。

    无论如何,所有短标签确实可以让您不必时不时地输入一些额外的字符。如果您真的很担心输入额外的字符,您应该使用支持 sn-ps 的 IDE 或文本编辑器,例如 Sublime Text

    【讨论】:

    • 我只是觉得它使 php 模板看起来比必须使用 更干净。为什么不尝试改进 php,而不是因为可以轻松解决的小问题而阻碍它。
    • 这个问题可能并不像您想象的那么容易在 PHP 代码中进行深入更改。
    • 我的意思是你提到的服务器兼容性等复杂问题通常可以通过编辑 php.ini 轻松解决。
    • 在共享的 Web 服务器环境中,这是不利的,因为更改核心 PHP 可能会导致其他客户网站出现意外问题。如果您正在运行自己的服务器并且完全控制 Apache 和 PHP,那么请务必使用短代码。但我最初的观点是,您永远不会真正确切地知道有一天您的网站可能需要在哪种服务器上运行,尤其是在为企业或客户开发网站时。将网站编码得尽可能灵活是一种很好的做法,这样您以后就不必再修改了。
    • @Jakobud short_open_tag 甚至可以在 .htaccess 或运行时级别上设置,这绝不会影响共享主机环境中其他用户的帐户。
    【解决方案2】:

    恕我直言,如果您愿意,请随意启用 short_open_tag,忽略 Symfony 发出的这个警告是安全的。哎呀,我主张完全取消支票。

    您提到的两个可能的问题是您在使用短开放标签时可能遇到的唯一理论上问题,但实际上,在我开发 PHP 应用程序的 10 年中,这对我来说从来都不是问题。

    即使在 XML 繁重的应用程序中,PHP 解析的 XML 标头也不可能在少数几个位置,并且在这些少数情况下,问题很容易被规避,例如回显 XML 标头本身。在这个后 XHTML 时代,您更不可能在 PHP 模板中开发任何带有 XML 标头的 Web 应用程序。一个没有实际意义的论点开始。

    就服务器配置而言,如今即使是普通的共享虚拟主机也允许修改 PHP 配置,尤其是此设置甚至可以在运行时远程设置,而您无法做到这一点。谁在将 Symfony 应用程序部署到共享主机?

    短开标签需要一些爱,它们在 PHP 5.4 中得到了一些,无论 short_open_tag 设置如何,都会启用回显语法 (<?= ?>)。此外,尽管有些人可能声称,短标签绝不是 PHP 已弃用的功能,并且会继续存在。

    如果您使用 PHP 模板,并且更喜欢短标签语法,那就去吧!

    【讨论】:

      【解决方案3】:

      AFAIK,如果您使用短标签,Symfony 1 或 2 中没有什么特别的东西会破坏,但从个人经验来看,它们不值得为您节省的少量打字。您提到了两个有效的投诉 - XML 冲突和服务器不兼容。这些是足够的理由不使用它们。将项目从一台服务器移动到另一台服务器并且不得不替换短标签是一种烦人的浪费时间:)

      【讨论】:

      • 你在说什么冲突?
      • 在进入下一个介绍页面后,我意识到 symfony 使用它自己的模板系统。所以我想使用 php 短标签并没有真正使用过?对吗?
      • 我猜twig模板引擎是可选的。
      • Symfony 仍然支持 Twig 模板旁边的 PHP 模板,而且短标签在模板中看起来更加整洁。 XML 标头问题很容易解决(在一个典型的 Symfony 应用程序中,您有多少由 PHP 解析的 XML 模板?),我不敢相信您会将 Symfony2 项目部署到您无法控制的服务器上这些天在 php.ini 上。此外,短标签在 PHP 5.4 中得到了应有的喜爱,并且无论 short_open_tag 设置如何,都将启用 = ?> 语法。
      • 2.0 编码标准禁止使用短标签,如果您正在考虑 contrib symfony.com/doc/2.0/contributing/code/standards.html#structure
      猜你喜欢
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多