2021年11月21日 星期日

(學習蒐文) PHP/HTML混寫的四種方式

1、單/雙引號包圍法
這是最初級的方法了,用法就像下面這樣

代碼:
<?php
echo '
<!DOCTYPE html>
<html>
<head>
<title> </title>
</head>
<body>
<span>測試頁面</span>
</body>
</html>
';
?>

這樣是最簡單的一種方法了,直接用單引號包裝上就行了

至於雙引號和單引號的區別,就在於前者解析引號內的變數,而後者不解析引號內的變數,參看下面的例子

代碼:
<?php
$Content='Hello!';
echo "$Content";
echo '<br>';
echo '$Content';
?>


輸出
代碼:
1 Hello!
2 $Content

由此可見,用雙引號包圍的字串中的變數名自動解析為了變數值,而用單引號包圍則依然顯示變數名

這樣書寫的缺點有兩點
1、如果輸出內容中包含單/雙引號將極難處理,因為PHP無法判斷這個引號是屬於程式的還是輸出內容的,所以會報錯
2、這樣書寫一些現代文字編輯器(如SublimeText)將無法對引號包圍的輸出的內容進行語法著色,如果出現一些格式問題將極難發現。圖中為SublimeText3的一張截圖,上面的是正常的著色,下面則是用引號包圍的著色

2、使用HEREDOC/NOWDOC
HEREDOC和NOWDOC是PHP5.3開始支援的一種新特性,它允許在程式中使用一種自定義的標誌符來包圍文字,而HEREDOC和NOWDOC的關係就類似於雙引號包圍和單引號包圍一樣,前者解析區塊內的變數,而後者不解析區塊內的變數
下面介紹HEREDOC和NOWDOC的用法

代碼:
<?php
$Content='Hello!';
//下面寫出了一個HEREDOC,其中標識LABEL可以自定義為任何字串,但要保證�}頭的標識和結尾的標識一樣
echo <<<LABEL
$Content
LABEL;
//結尾的方法:另起一行,打上LABEL。注意結尾的標識前面和後面不要插入任何字元,空格�]不行
echo '<br>';//為了演示方便換行
//NOWDOC和HEREDOC的書寫方式差別在於NOWDOC的識別符號需要用單引號�]圍
echo <<<'LABEL'
$Content
LABEL;
//其他無異
?>

也可以參考PHP.net上的關於這兩個的wiki:https://wiki.php.net/rfc/heredoc-with-double-quotes

用HEREDOC/NOWDOC書寫極好的解決了包圍引號的問題,但依然沒有解決語法著色失效的問題

3、HTML中嵌入PHP程式塊(推薦)
這是一種非常合適的辦法,並且這種方法廣泛用在了諸如WordPress模板等場合中。書寫起來也較為方便,直接在需要輸出的地方寫上相關的程式碼就行了,就像下面這樣

代碼:
<?php
//首先在這裡寫好相關的呼叫�{式碼
function OutputTitle(){
echo 'TestPage';
}
function OutputContent(){
echo 'Hello!';
}
//然後再下面呼叫相關函式就可以了
?>
<!DOCTYPE html>
<html>
<head>
<title><?php OutputTitle(); ?></title>
</head>
<body>
<span><?php OutputContent(); ?></span>
</body>
</html>

我認為這種方法是在這三種方法中最好的,但是這樣做的缺點是如果這樣的程式碼塊一多了就會嚴重影響程式閱讀。

4、使用前端模板引擎
由於前端的重要性在整個Web開發中日益上升,現在前/後端工程師逐漸在分離成兩個職業,所以說為了確保前/後端工程師能夠相互配合,使前端開發和後端開發出來的東西對接更完美,逐漸催生出了一系列前端模板引擎,比如Smarty。使用Smarty書寫的實現程式碼可讀性非常的高,這使前/後端的分離也更加的高效和便捷。有興趣的同學可以去搜尋瞭解

沒有留言:

張貼留言

(Centos-7s) 更新: 網卡名稱改回 eth0 的方法

將 CentOS 7 網卡名稱修改, 用回 Eth0 的方法:   1) # vi /etc/sysconfig/grub 內容大概是這樣:   GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release...