php heredoc和phpwind的模板技術(shù)使用方法小結(jié)
更新時(shí)間:2008年03月28日 22:58:45 作者:
Heredoc技術(shù),在正規(guī)的PHP文檔中和技術(shù)書籍中一般沒有詳細(xì)講述,只是提到了這是一種Perl風(fēng)格的字符串輸出技術(shù)。但是現(xiàn)在的一些論壇程序,和部分文章系統(tǒng),都巧妙的使用heredoc技術(shù),來部分的實(shí)現(xiàn)了界面與代碼的準(zhǔn)分離,phpwind就是一個(gè)典型的例子。
在PHP的文檔中,只是提到了echo可以使用如下命令輸出多行字符串(而且其中的變量被自動(dòng)替換):
PHP代碼
echo <<<END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!
END;
上面的END結(jié)束符可以自己規(guī)定,在Phpwind,使用了“EOT”來結(jié)束。但是需要注意的是,這個(gè)END必須是在一行的開頭才能有效,這其實(shí)是Heredoc技術(shù)的一個(gè)局限性(因?yàn)閔eredoc可以自定義結(jié)束符,所以引入了這個(gè)問題),在下面會(huì)提到。
phpwind的模板文件一般存放在templatewind目錄下面,在BBS目錄中,使用require語句包含這個(gè)模板文件。其實(shí)這個(gè)模板文件是作為對(duì)應(yīng)的PHP文件的一部分執(zhí)行的,所以就不需要像PHPLib Template那樣需要進(jìn)行模板解析,然后再執(zhí)行的過程。
為了讓heredoc的內(nèi)容能被DreamWeaver這樣的編輯器正確識(shí)別,以實(shí)現(xiàn)“所見即所得的”的網(wǎng)頁設(shè)計(jì),需要在heredoc中增加注釋,示例文件如下:
PHP代碼
<!--
<?php
print <<<EOT
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Untitled Document</title>
</head>
<body>
<!--
$name = '淺水游';
print <<<EOT
-->
Hello,$name!
<!--
EOT
print <<<EOT
-->
</body>
</html>
<!--
EOT;
?>
-->
這樣的模板文件,其實(shí)就是一個(gè)標(biāo)準(zhǔn)的,可以執(zhí)行的PHP文件。但是,這樣的PHP文件,其HTML樣式在DreamWeaver中可以正確的顯示出來,所有的PHP代碼會(huì)被看做HTML注釋,而且在輸出的時(shí)候,不會(huì)輸出出來。比如,上面的文件在DreamWeaver中,被顯示成:
PHP代碼
Hello,$name!
這樣,在設(shè)計(jì)頁面的時(shí)候,我們就可以借助DW的可視化界面,進(jìn)行一些界面的修改,美化等工作。盡管沒有實(shí)現(xiàn)完全的代碼和HTML的分離,但至少提供了一種輔助性的設(shè)計(jì)手段。
PHP代碼
復(fù)制代碼 代碼如下:
echo <<<END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!
END;
上面的END結(jié)束符可以自己規(guī)定,在Phpwind,使用了“EOT”來結(jié)束。但是需要注意的是,這個(gè)END必須是在一行的開頭才能有效,這其實(shí)是Heredoc技術(shù)的一個(gè)局限性(因?yàn)閔eredoc可以自定義結(jié)束符,所以引入了這個(gè)問題),在下面會(huì)提到。
phpwind的模板文件一般存放在templatewind目錄下面,在BBS目錄中,使用require語句包含這個(gè)模板文件。其實(shí)這個(gè)模板文件是作為對(duì)應(yīng)的PHP文件的一部分執(zhí)行的,所以就不需要像PHPLib Template那樣需要進(jìn)行模板解析,然后再執(zhí)行的過程。
為了讓heredoc的內(nèi)容能被DreamWeaver這樣的編輯器正確識(shí)別,以實(shí)現(xiàn)“所見即所得的”的網(wǎng)頁設(shè)計(jì),需要在heredoc中增加注釋,示例文件如下:
PHP代碼
復(fù)制代碼 代碼如下:
<!--
<?php
print <<<EOT
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Untitled Document</title>
</head>
<body>
<!--
$name = '淺水游';
print <<<EOT
-->
Hello,$name!
<!--
EOT
print <<<EOT
-->
</body>
</html>
<!--
EOT;
?>
-->
這樣的模板文件,其實(shí)就是一個(gè)標(biāo)準(zhǔn)的,可以執(zhí)行的PHP文件。但是,這樣的PHP文件,其HTML樣式在DreamWeaver中可以正確的顯示出來,所有的PHP代碼會(huì)被看做HTML注釋,而且在輸出的時(shí)候,不會(huì)輸出出來。比如,上面的文件在DreamWeaver中,被顯示成:
PHP代碼
復(fù)制代碼 代碼如下:
Hello,$name!
這樣,在設(shè)計(jì)頁面的時(shí)候,我們就可以借助DW的可視化界面,進(jìn)行一些界面的修改,美化等工作。盡管沒有實(shí)現(xiàn)完全的代碼和HTML的分離,但至少提供了一種輔助性的設(shè)計(jì)手段。
您可能感興趣的文章:
- PHPWind與Discuz截取字符函數(shù)substrs與cutstr性能比較
- PHPwind整合最土系統(tǒng)用戶同步登錄實(shí)現(xiàn)方法
- PHPWind 發(fā)帖回帖Api PHP版打包下載
- PHPWIND 5.3 運(yùn)行代碼 功能實(shí)現(xiàn)代碼
- phpwind管理權(quán)限泄露漏洞利用程序發(fā)布
- 關(guān)于phpwind克隆用戶的方法
- PHP 優(yōu)化配置——加速你的VBB,phpwind,Discuz,IPB,MolyX
- phpwind Exp 漏洞利用
- phpwind中的數(shù)據(jù)庫操作類
- PHPWind9.0手動(dòng)屏蔽驗(yàn)證碼解決后臺(tái)關(guān)閉驗(yàn)證碼但是依然顯示的問題
相關(guān)文章
PHP中使用數(shù)組實(shí)現(xiàn)堆棧數(shù)據(jù)結(jié)構(gòu)的代碼
堆棧是一種數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)形式,是廣泛用來存取數(shù)據(jù)的一種容器2012-02-02PHP數(shù)組常用函數(shù)實(shí)例小結(jié)
這篇文章主要介紹了PHP數(shù)組常用函數(shù),結(jié)合實(shí)例形式總結(jié)分析了php針對(duì)數(shù)組的統(tǒng)計(jì)、計(jì)算、去重、過濾等相關(guān)函數(shù)使用技巧,需要的朋友可以參考下2018-08-08php基礎(chǔ)知識(shí):控制結(jié)構(gòu)
php基礎(chǔ)知識(shí):控制結(jié)構(gòu)...2006-12-12php實(shí)現(xiàn)獲取近幾日、月時(shí)間示例
這篇文章主要介紹了php實(shí)現(xiàn)獲取近幾日、月時(shí)間的方法,結(jié)合實(shí)例形式分析了PHP日期時(shí)間相關(guān)的date_default_timezone_set時(shí)區(qū)設(shè)置、date與mktime時(shí)間計(jì)算、轉(zhuǎn)換等操作技巧,需要的朋友可以參考下2019-07-07php批量添加數(shù)據(jù)與批量更新數(shù)據(jù)的實(shí)現(xiàn)方法
這篇文章主要介紹了php批量添加數(shù)據(jù)與批量更新數(shù)據(jù)的實(shí)現(xiàn)方法,涉及針對(duì)表單的處理與sql語句的靈活使用,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12