顯示具有 vscode 標籤的文章。 顯示所有文章
顯示具有 vscode 標籤的文章。 顯示所有文章

2018-10-14

有關 PHP 檔案中的起啟標記 的使用

一開始在學 php 程式時,通常找到的教學資料都會說要在 *.php 中要寫 php 語言時,要用一個特有的標記 (tag) 將所寫的程式包起來,這樣將 php 檔案傳給 php engine 運行時才會做出程式碼所對應的行為…這個 tag 如下
<?php
?>
註:<?php 的 php 會因為 php.ini 是否有啟用 enable-short-tags 而增減,有啟用的話就只要輸入 <? 就好了

 這個 tag 跟在寫 jsp 或 classicASP 時會用 <% ... %> 在 *.jsp 或 *.asp 中的意義一樣,就是指在這個 tag 範圍內的是「程式語言」,而不是 html code。

不過我最近在網路上看到一些案子跟最近我自己正在改用 Visual Studio Code (簡稱 vscode) 來寫程式而裝了一個叫「php cs fixer」的套件時,發現一個狀況…感覺蠻特別的。

我在使用「php cs fixer」來美化排版 php 檔時,我會看到某一些 php 檔中結尾的標記符號「?>」消失了…我一開始以為是這個排版套件的異常,但因為不是所有的 php 檔都這樣,而是沒有和 html 語言混用的 php 檔才會這樣,所以我就上 google 翻資料。

後來在「PHP Manual」中找到「PHP tags」中有說明
If a file is pure PHP code, it is preferable to omit the PHP closing tag at the end of the file. This prevents accidental whitespace or new lines being added after the PHP closing tag, which may cause unwanted effects because PHP will start output buffering when there is no intention from the programmer to send any output at that point in the script.
大至上的說明是「如果檔案內容是純 php 程式碼的,最好是不要在檔案的最後使用結尾標記。其是為了避免不小心在結尾標記之後多輸入了空白符號或空行,以導致輸出了這一些無意義的東西。」

說是無意義,確實有時像網頁在編排或什麼的有時真的會有這類狀況…不過我本來以為會是安全的角度,看來是我想太多。