PHP做爲一款後端語言,爲了輸出給瀏覽器讓瀏覽器呈現出來,無可避免的要輸出HTML代碼,下文介紹下我用過的三種PHP/HTML混編方法php
這是最初級的方法了,用法就像下面這樣html
1 <?php 2 echo ' 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <title> </title> 7 </head> 8 <body> 9 <span>測試頁面</span> 10 </body> 11 </html> 12 '; 13 ?>
這樣是最簡單的一種方法了,直接用單引號包裝上就好了前端
至於雙引號和單引號的區別,就在於前者解析引號內的變量,然後者不解析引號內的變量,參看下面的例子後端
1 <?php 2 $Content='Hello!'; 3 echo "$Content"; 4 echo '<br>'; 5 echo '$Content'; 6 ?>
輸出瀏覽器
1 Hello! 2 $Content
因而可知,用雙引號包圍的字符串中的變量名自動解析爲了變量值,而用單引號包圍則依然顯示變量名編輯器
這樣書寫的缺點有兩點函數
1.若是輸出內容中包含單/雙引號將極難處理,由於PHP沒法判斷這個引號是屬於程序的仍是輸出內容的,因此會報錯post
2.這樣書寫一些現代文本編輯器(如SublimeText)將沒法對引號包圍的輸出的內容進行語法着色,若是出現一些格式問題將極難發現。圖中爲SublimeText3的一張截圖,上面的是正常的着色,下面則是用引號包圍的着色測試
HEREDOC和NOWDOC是PHP5.3開始支持的一種新特性,它容許在程序中使用一種自定義的標誌符來包圍文本,而HEREDOC和NOWDOC的關係就相似於雙引號包圍和單引號包圍同樣,前者解析區塊內的變量,然後者不解析區塊內的變量url
下面介紹HEREDOC和NOWDOC的用法
1 <?php 2 $Content='Hello!'; 3 4 //下面寫出了一個HEREDOC,其中標識LABEL能夠自定義爲任何字符串,但要保證開頭的標識和結尾的標識同樣 5 echo <<<LABEL 6 $Content 7 LABEL; 8 //結尾的方法:另起一行,打上LABEL。注意結尾的標識前面和後面不要插入任何字符,空格也不行 9 10 echo '<br>';//爲了演示方便換行 11 12 //NOWDOC和HEREDOC的書寫方式差異在於NOWDOC的標識符須要用單引號包圍 13 echo <<<'LABEL' 14 $Content 15 LABEL; 16 //其餘無異 17 18 19 ?>
也能夠參考PHP.net上的關於這兩個的wiki:https://wiki.php.net/rfc/heredoc-with-double-quotes
用HEREDOC/NOWDOC書寫極好的解決了包圍引號的問題,但依然沒有解決語法着色失效的問題
這是一種很是合適的辦法,而且這種方法普遍用在了諸如WordPress模板等場合中。書寫起來也較爲方便,直接在須要輸出的地方寫上相關的代碼就好了,就像下面這樣
1 <?php 2 3 //首先在這裏寫好相關的調用代碼 4 function OutputTitle(){ 5 echo 'TestPage'; 6 } 7 function OutputContent(){ 8 echo 'Hello!'; 9 } 10 11 //而後再下面調用相關函數就能夠了 12 ?> 13 14 <!DOCTYPE html> 15 <html> 16 <head> 17 <title><?php OutputTitle(); ?></title> 18 </head> 19 <body> 20 <span><?php OutputContent(); ?></span> 21 </body> 22 </html>
我認爲這種方法是在這三種方法中最好的,可是這樣作的缺點是若是這樣的代碼塊一多了就會嚴重影響程序閱讀。
因爲前端的重要性在整個Web開發中日益上升,如今前/後端工程師逐漸在分離成兩個職業,因此說爲了確保前/後端工程師可以相互配合,使前端開發和後端開發出來的東西對接更完美,逐漸催生出了一系列前端模板引擎,好比Smarty。使用Smarty書寫的實現代碼可讀性很是的高,這使前/後端的分離也更加的高效和便捷。有興趣的同窗能夠去搜索瞭解