Heim > Backend-Entwicklung > PHP-Tutorial > php文件只要开始标签而不要结尾标签?

php文件只要开始标签而不要结尾标签?

WBOY
Freigeben: 2016-06-06 20:46:46
Original
1627 Leute haben es durchsucht

项目中有用到php yii框架, 今天看了规范文档
https://github.com/yiisoft/yii/wiki/Core-framework-code-style

里面有说道:php文件只要开始标签 <?php 不要结束标签 ?>, 印象中好像有看到其他框架也这么说过, 貌似会更安全, 为什么, 哪里有相关介绍?

回复内容:

项目中有用到php yii框架, 今天看了规范文档
https://github.com/yiisoft/yii/wiki/Core-framework-code-style

里面有说道:php文件只要开始标签 <?php 不要结束标签 ?>, 印象中好像有看到其他框架也这么说过, 貌似会更安全, 为什么, 哪里有相关介绍?

这是官方手册上推荐的用法,手册上有详细说明:

如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图。

纯 PHP 文件必须省略关闭标签、
文件末尾必须空一行。
换仿佛必须是 LF。

这就是PSR-2风格指南里的, 该指南是经过许多的开源项目风格调查之后总结的一个多数人使用的方法。 旨在让不同的 PHP 项目之间切换, 或审阅别人代码时, 能够无缝开始, 降低熟悉风格的成本。 这个风格上的所有内容都是有一定意义的,比如省略关闭标签主要是文件 include 和 输出内容不受干扰的考量。 否则很有可能在你的关闭标签后面掺杂东西到另一个文件里, 没有经验的人会很难排查错误。

www.php-fig.org

我这两天翻译个这个, yii2的风格, 基本是在psr2基础上做少许修改(缩进四个空格改为tab),https://github.com/AbrahamGreyson/yii2-zh-cn/blob/master/internals/core-code-style.md

更正下,经过激烈的讨论,yii2决定完全兼容psr2, 移除tab缩进,改为更符合社区多数人习惯的4空格缩进。

一点题外话,这仅仅是代码风格指南,最大的意义不是所有人都遵守它,而是在一个圈子内大家尽量维持一致,以便提高协作的效率,在这点上google有一篇文章专门讲公司内部代码规范的必要性。 大家支持并尊重该指南的基础是, 不搞那么多个性化,一切都按照大家约定的习惯来。 目前 PHP 已经有相当多大项目完全遵照这个风格。例如yii2 symfony2 laravel。如果你想在测试的时候集成风格的检查, 可以安装 PHP_CodeSniffer , 他能在构建的时候给你检查风格是否符合你的设定。

另外注释是另一个范畴了, 建议你用符合 PHPdoc 规范的注释。 可以自动把你的代码生成 api 手册, 可以代替类图 uml之类的东西。 快速查询时比较方便。

如果使用闭合标签,任何由开发者,用户,或者FTP应用程序插入闭合标签后面的空格都有可能会引起多余的输出、php错误、之后的输出无法显示、空白页。因此,所有的php文件应该省略这个php闭合标签,并插入一段注释来标明这是文件的底部并定位这个文件在这个应用的相对路径。这样有利于你确定这个文件已经结束而不是被删节的。

摘自CI手册

我昨天已经吃过亏了。文件被require的时候,就会把多余的东西发过去。

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage