最早這個概念是從Drupal中接觸到的,一開始有點不習慣——為什麼不寫閉合標簽呢?這感覺很不完美啊,對於有強迫症的人來說很不適應嘛!後來,在工作中碰到了因為標簽閉合而引起的問題,才開始不寫閉合標簽。
參閱了一些文章,對PHP閉合標簽的總結如下:
好處:如果這個是一個被別人包含的程序,沒有這個結束符,可以減少很多很多問題,比如說:header, setcookie, session_start這些動作之前不能有輸出,如果不小心在?> 後邊加了不可見字符(多余的空格、換行符)等破壞頁面顯示,就會報"Header already sent"錯誤,不寫的話不會有此問題。另,可以直接把光標移到最後,接著編程。
壞處:在dreamweaver的視圖模式下,一團糟。
關於PHP閉合標簽官方解釋是:PHP閉合標簽"?>"在PHP中對PHP的分析器是可選的。但是,如果使用閉合標簽,任何由開發者,用戶, 或者FTP應用程序插入閉合標簽後面的空格都有可能會引起多余的輸出、php錯誤、之後的輸出無法顯示、空白頁。因此,所有的php文件應該省略這個php閉合標簽,並插入一段注釋來標明這是文件的底部並定位這個文件在這個應用的相對路徑。這樣有利於你確定這個文件已經結束而不是被刪節的。
在Zend的代碼規范中,也提到了這一點:http://framework.zend.com/manual/1.12/en/coding-standard.php-file-formatting.html
代碼示例:
不當的:
復制代碼 代碼如下:
<?php
echo "Here's my code!";
?>
適當的:
復制代碼 代碼如下:<?php
echo "Here's my code!";
/* End of file myfile.php */
/* Location: ./system/modules/mymodule/myfile.php */
因此,如果是純php code文件的話,應該省略?>結束標識符。