国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
你好
首頁 後端開發(fā) php教程 用PHP製作靜態(tài)網(wǎng)站的模板框架_PHP教程

用PHP製作靜態(tài)網(wǎng)站的模板框架_PHP教程

Jul 21, 2016 pm 04:11 PM
php 。 製作 如何 改善 框架 範(fàn)本 結(jié)構(gòu) 網(wǎng) 能夠 透過 靜態(tài)


模板能夠改善網(wǎng)站的結(jié)構(gòu)。本文闡述如何透過PHP 4的一個新功能和模板類,在由大量靜態(tài)HTML頁面構(gòu)成的網(wǎng)站中巧妙地運用模板控制頁面佈局。

提綱:

===================================

分離功能和版面


避免頁面元素重複


靜態(tài)網(wǎng)站的模板框架

======== ===========================

分離功能和佈局

首先我們來看看應(yīng)用模板的兩個主要目的:

分離功能(PHP)和佈局(HTML)

避免頁面元素重複

第一個目的是談?wù)摰米疃嗟哪康?,它設(shè)想的情況是:一組程式設(shè)計師編寫用於產(chǎn)生頁面內(nèi)容的PHP腳本,同時另一組設(shè)計人員設(shè)計HTML和圖形以控制頁面的最終外觀。分離功能和佈局的基本思想是使得這兩組人能夠各自編寫和使用獨立的一組文件:程式設(shè)計師只需關(guān)心那些只包含PHP程式碼的文件,無需關(guān)心頁面的外觀;而頁面設(shè)計人員可以用自己最熟悉的視覺化編輯器設(shè)計頁面佈局,無需擔(dān)心破壞任何嵌入到頁面的PHP程式碼。

如果你曾經(jīng)看過幾個關(guān)於PHP模板的教程,那麼你應(yīng)該已經(jīng)明白模板的工作機制??紤]一個簡單的頁面局部:頁面的上方是頁頭,左邊是導(dǎo)覽條,其餘部分是內(nèi)容區(qū)域。這種網(wǎng)站可以擁有以下範(fàn)本檔案:



範(fàn)本範(fàn)例



{HEADER}
{LEFTNAV} {CONTENT }




用PHP製作靜態(tài)網(wǎng)站的模板框架_PHP教程



Foo

Bar

可以看出頁面如何由這些模板構(gòu)造而成:main模板控制著整個頁面的佈局;header模板和leftnav模板控制著頁面的公共元素?;ɡㄌ枴竰}」裡面的識別字是內(nèi)容佔位符。使用範(fàn)本最主要的好處是介面設(shè)計者能夠按照自己的意願編輯這些文件,例如設(shè)定字體、修改顏色和圖形,或完全改變頁面的佈局。介面設(shè)計者可以用任何普通HTML編輯器或視覺化工具編輯這些頁面,因為這些檔案都只包含HTML程式碼,沒有任何PHP程式碼。 PHP程式碼全部保存到單獨的檔案中,這個檔案也就是由頁面URL實際呼叫的檔案。 Web伺服器透過PHP引擎解析該文件,然後把結(jié)果傳回瀏覽器。一般地,PHP程式碼總是動態(tài)地產(chǎn)生頁面內(nèi)容,例如查詢資料庫或執(zhí)行某種計算等。以下是一個範(fàn)例:

// example.php
require('class.FastTemplate.php');
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav' => 'leftnav.htm' ) );

// 此處的PHP程式碼設(shè)定$content使其包含適當(dāng)?shù)捻撁鎯?nèi)容

$tpl->assign('CONTENT', $content);
$tpl ->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN');

?>

這裡我們使用的是流行的FastTemplate模板類,但其基本思路對於其他許多模板類來說都對於其他許多模板類來說都一樣。首先你實例化一個類,告訴它到哪裡去尋找模板文件以及哪一個模板文件與頁面的哪部分對應(yīng);接下來是生成頁面內(nèi)容,把結(jié)果賦予內(nèi)容的標(biāo)識符;然後,依次解析各個模板文件,模板類別將執(zhí)行必要的替換操作;最後把解析結(jié)果輸出到瀏覽器。

這個檔案完全由PHP程式碼構(gòu)成,不包含任何HTML程式碼,這是它最大的優(yōu)點。現(xiàn)在,PHP程式設(shè)計師可以專注於編寫產(chǎn)生頁面內(nèi)容的程式碼,而不必為瞭如何產(chǎn)生HTML去正確地格式化最終頁面而擔(dān)心。

你可以用這個方法和上面的檔案建構(gòu)出一個完整的網(wǎng)站。如果PHP程式碼是以URL中的查詢字串為基礎(chǔ)產(chǎn)生頁面內(nèi)容,例如http://www.foo.com/example.php?article=099,你可以據(jù)此建構(gòu)出一個完整的雜誌網(wǎng)站。

很容易看出採用模板還有第二個好處。如上例所示,頁面左邊的導(dǎo)覽條單獨儲存為一個文件,我們只需編輯這一個範(fàn)本文件就可以改變網(wǎng)站所有頁面左邊的導(dǎo)覽條。 避免頁面元素重複
“這確實不錯”,你也許會想,“我的網(wǎng)站主要是由大量的靜態(tài)頁面構(gòu)成?,F(xiàn)在我可以從所有頁面中刪除它們的公共部分,要更新這些公共部分實在太麻煩了。以後我就可以用模板製作出很容易維護的統(tǒng)一頁面佈局。 」但事情並非這麼簡單,「大量的靜態(tài)頁面」道出了問題的所在。

請考慮上面的例子。這個例子實際上只有一個example.php頁面,它之所以能夠生成整個網(wǎng)站的所有頁面,是因為它利用了URL中的查詢字串從資料庫之類的資訊來源動態(tài)地建構(gòu)出頁面。資料庫支援。 ??> 最簡單的方法是為每一個頁面複製一份PHP文件,然後在每一個頁面中把PHP程式碼裡代表內(nèi)容的變數(shù)設(shè)定成合適的頁面內(nèi)容。 home)、關(guān)於(about)和產(chǎn)品(product),我們可以用三個檔案分別產(chǎn)生它們。 home.php
require('class.FastTemplate.php');
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main. htm',
'header' => 'header.htm',
'leftnav' => 'leftnav.htm' ) );

$content = "

歡迎參觀 p>
用PHP製作靜態(tài)網(wǎng)站的模板框架_PHP教程

希望你能喜歡本網(wǎng)站

";
$tpl->assign('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', ' main');
$tpl->FastPrint('MAIN');

?>

顯然,這種方法有三個問題:我們必須為每個頁面複製這些複雜的、牽涉到模板的PHP代碼,這與重複公共頁面元素一樣使得頁面難以維護;現(xiàn)在文件又混合了HTML和PHP代碼;為內(nèi)容變量賦值將變得非常困難,因為我們必須處理好大量的特殊字符。 靜態(tài)網(wǎng)站的模板框架

首先,我們像前面一樣為所有的頁面公用元素以及頁面整體佈局編寫模板文件;然後從所有的頁面刪除公共部分,只留下頁面內(nèi)容;接下來再在每頁加上三行PHP程式碼,如下圖:






你好


歡迎造訪


用PHP製作靜態(tài)網(wǎng)站的模板框架_PHP教程

希望你能喜歡本網(wǎng)站





? >

這種方法基本上解決了前面提到的各種問題?,F(xiàn)在檔案裡只有三行PHP程式碼,而且沒有任何一行程式碼直接涉及模板,因此要改變這些程式碼的可能性極小。此外,由於HTML內(nèi)容位於PHP標(biāo)記之外,所以也不存在特殊字元的處理問題。我們可以很容易地將這三行PHP程式碼加入所有靜態(tài)HTML頁面中。

require函數(shù)引進了一個PHP文件,這個文件包含了所有必需的與範(fàn)本相關(guān)的PHP程式碼。其中pageStart函數(shù)設(shè)定模板物件以及頁面標(biāo)題,pageFinish函數(shù)解析模板然後產(chǎn)生結(jié)果發(fā)送給瀏覽器。

這是如何實現(xiàn)的呢?為什麼在呼叫pageFinish函數(shù)之前文件中的HTML不會傳送給瀏覽器?答案就在於PHP 4的一個新功能,這個功能允許把輸出到瀏覽器的內(nèi)容截獲到緩衝區(qū)之中。讓我們來看看prepend.php的具體程式碼:


require('class.FastTemplate.php');

function pageStart($title = '') {
GLOBAL $tpl;
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav'=> 'leftnav.htm' ) );
$tpl->assign('TITLE', $title);
ob_start() ;
}

function pageFinish() {
GLOBAL $tpl;
$content = ob_get_contents();
ob_end_clean();
$tpl-assign(. CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl-> parse('MAIN', 'main');
$tpl->FastPrint('MAIN');
}

?> pageStart函數(shù)首先建立並設(shè)定了一個範(fàn)本實例,然後啟用輸出快取。此後,所有來自頁面本身的HTML內(nèi)容都將進入快取。 pageFinish函數(shù)取出快取中的內(nèi)容,然後在範(fàn)本物件中指定這些內(nèi)容,最後解析範(fàn)本並輸出完成後的頁面。
用PHP製作靜態(tài)網(wǎng)站的模板框架_PHP教程

這就是整個模板框架的全部工作過程了。首先編寫包含了網(wǎng)站各個頁面公共元素的模板,然後從所有頁面中刪除全部公共的頁面佈局代碼,代之以三行永遠(yuǎn)無需改動的PHP代碼;再把FastTemplate類文件和prepend.php加入到包含路徑,這樣你就得到了一個頁面佈局可以集中控制的網(wǎng)站,它有著更好的可靠性和可維護性,而且網(wǎng)站級的大範(fàn)圍修改也變得相當(dāng)容易。

本文下載套件包含了一個可運行的範(fàn)例網(wǎng)站,它的程式碼註解比前面的程式碼註解更詳細(xì)一些。 FastTemplate類別可以在http://www.thewebmasters.net/找到,最新的版本號碼是1.1.0,那裡還有一個用於保證該類別在PHP 4中正確運行的小補丁。本文下載程式碼中的類別已經(jīng)經(jīng)過該補丁的修正。

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/314011.htmlTechArticle模板能夠改善網(wǎng)站的結(jié)構(gòu)。本文闡述如何透過PHP 4的一個新功能和模板類,在由大量靜態(tài)HTML頁面構(gòu)成的網(wǎng)站中巧妙地運用模板控制頁面佈局...
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在PHP中獲取當(dāng)前的會話ID? 如何在PHP中獲取當(dāng)前的會話ID? Jul 13, 2025 am 03:02 AM

在PHP中獲取當(dāng)前會話ID的方法是使用session_id()函數(shù),但必須先調(diào)用session_start()才能成功獲取。 1.調(diào)用session_start()啟動會話;2.使用session_id()讀取會話ID,輸出類似abc123def456ghi789的字符串;3.若返回為空,檢查是否遺漏session_start()、用戶是否首次訪問或會話是否被銷毀;4.會話ID可用於日誌記錄、安全驗證和跨請求通信,但需注意安全性。確保正確開啟會話後即可順利獲取ID。

php從字符串獲取子字符串 php從字符串獲取子字符串 Jul 13, 2025 am 02:59 AM

要從PHP字符串中提取子字符串,可使用substr()函數(shù),其語法為substr(string$string,int$start,?int$length=null),若未指定長度則截取至末尾;處理多字節(jié)字符如中文時應(yīng)使用mb_substr()函數(shù)以避免亂碼;若需根據(jù)特定分隔符截取字符串,可使用explode()或結(jié)合strpos()與substr()實現(xiàn),例如提取文件名擴展名或域名。

您如何執(zhí)行PHP代碼的單元測試? 您如何執(zhí)行PHP代碼的單元測試? Jul 13, 2025 am 02:54 AM

UnittestinginPHPinvolvesverifyingindividualcodeunitslikefunctionsormethodstocatchbugsearlyandensurereliablerefactoring.1)SetupPHPUnitviaComposer,createatestdirectory,andconfigureautoloadandphpunit.xml.2)Writetestcasesfollowingthearrange-act-assertpat

如何將字符串分為PHP中的數(shù)組 如何將字符串分為PHP中的數(shù)組 Jul 13, 2025 am 02:59 AM

在PHP中,最常用的方法是使用explode()函數(shù)將字符串拆分為數(shù)組。該函數(shù)通過指定的分隔符將字符串分割成多個部分並返回數(shù)組,語法為explode(separator,string,limit),其中separator為分隔符,string為原字符串,limit為可選參數(shù)控制最大分割數(shù)量。例如$str="apple,banana,orange";$arr=explode(",",$str);結(jié)果為["apple","bana

JavaScript數(shù)據(jù)類型:原始與參考 JavaScript數(shù)據(jù)類型:原始與參考 Jul 13, 2025 am 02:43 AM

JavaScript的數(shù)據(jù)類型分為原始類型和引用類型。原始類型包括string、number、boolean、null、undefined和symbol,其值不可變且賦值時復(fù)制副本,因此互不影響;引用類型如對象、數(shù)組和函數(shù)存儲的是內(nèi)存地址,指向同一對象的變量會相互影響。判斷類型可用typeof和instanceof,但需注意typeofnull的歷史問題。理解這兩類差異有助於編寫更穩(wěn)定可靠的代碼。

在C中使用std :: Chrono 在C中使用std :: Chrono Jul 15, 2025 am 01:30 AM

std::chrono在C 中用於處理時間,包括獲取當(dāng)前時間、測量執(zhí)行時間、操作時間點與持續(xù)時間及格式化解析時間。 1.獲取當(dāng)前時間使用std::chrono::system_clock::now(),可轉(zhuǎn)換為可讀字符串但係統(tǒng)時鐘可能不單調(diào);2.測量執(zhí)行時間應(yīng)使用std::chrono::steady_clock以確保單調(diào)性,並通過duration_cast轉(zhuǎn)換為毫秒、秒等單位;3.時間點(time_point)和持續(xù)時間(duration)可相互操作,但需注意單位兼容性和時鐘紀(jì)元(epoch)

如何將會話變量傳遞給PHP中的另一頁? 如何將會話變量傳遞給PHP中的另一頁? Jul 13, 2025 am 02:39 AM

在PHP中,要將一個會話變量傳到另一個頁面,關(guān)鍵在於正確開啟會話並使用相同的$_SESSION鍵名。 1.每個頁面使用session變量前必須調(diào)用session_start(),且放在腳本最前面;2.在第一個頁面設(shè)置session變量如$_SESSION['username']='JohnDoe';3.在另一頁面同樣調(diào)用session_start()後通過相同鍵名訪問變量;4.確保每個頁面都調(diào)用session_start()、避免提前輸出內(nèi)容、檢查服務(wù)器上session存儲路徑可寫;5.使用ses

PHP如何處理環(huán)境變量? PHP如何處理環(huán)境變量? Jul 14, 2025 am 03:01 AM

toAccessenvironmentVariablesInphp,useGetenv()或$ _envsuperglobal.1.getEnv('var_name')retievesSpecificvariable.2。 $ _ en v ['var_name'] accessesvariablesifvariables_orderInphp.iniincludes“ e” .setVariablesViaCliWithvar = vualitephpscript.php,inapach

See all articles