如您所知,大多数PHP源代码都不赞成插入结束标记,但我想知道为什么在Lithium documentation中,鼓励包含一个结束的PHP标记?这有什么合理的理由吗?除此之外,其文档中还有其他一些过时的风格。锂是一个活跃的项目吗?
更新:即使在只包含PHP的文件中打开php标签似乎也是多余的,我们将其包括在内,因为目前我们必须这样做,(如果只有文件的标准文件扩展名) php代码不需要打开标签了,但更奇怪的是有些人甚至说我们应该包含一个结束标签!
答案 0 :(得分:3)
省略结束标签很草率。
任何人都有这样做的唯一借口是你可能会意外地留下一些尾随的空格,导致标题过早发送。这就是为什么这种理由完全是假的:
基本上,人们用懒惰的最差形式证明是不合理的。
如果您浏览Lithium的编码标准,您会注意到对称性的高度关注。编码标准中的 Everything 是对称的。包括开/关标签。这样做对我们来说永远不会是一个问题,因为我们有很好的QA工具。
答案 1 :(得分:2)
问题中提到的链接...... Coding Standards ......就是这样,Lithium开发人员认为是他们项目的最佳编码标准。我个人同意最好使用结束标签。
虽然PHP docs说如果它是“纯粹的”PHP代码(大多数情况下你不会意外地添加空格或其后的东西)而不使用close标签是“首选”,这是一种避免这种情况的简单方法是不是首先要做的。我更喜欢留在标签中......
这也有点误解了Lithium的工作原理......给出的例子是用作Controllers,Models等文件的文件。这些文件大部分都不能直接访问像Views这样的最终用户请求(很好地解释了它的简单方法。)
至于锂是否是一个“活跃”的项目,我建议他们参考......
截至本文,最后一次开发分支提交是在10小时前完成的。
为了记录,Lithium doc中的其他示例使用所谓的PHP“短”标签,例如<?= ... ?>
代替:<?php ... ?>
附带一个重要警告,请参阅docs:
您可能已经注意到上面的示例使用了短标记 用于输出视图变量内容的语法。这个语法有点 误导,因为锂不依赖或使用短标签:这 输出行为与它看起来有点不同。当。。。的时候 渲染视图层,每个模板由标记化器处理 在它被编译成最终形式之前。在这一步中的事情 像这样:
<?=$variable; ?>
翻译成这样的东西:
<?php echo $h($variable); ?>
您在此处看到的
$h()
函数会转义HTML。做多久 简而言之,这种机制为您提供了一种简便的方法 所有动态生成的数据都安全地登陆HTML 模板。我们强烈建议您在视图中使用
<?= ...; ?>
语法 它有助于加强您的应用程序对跨站点 脚本(和相关)攻击技术。