溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP模板引擎的原理是什么

發(fā)布時(shí)間:2022-08-08 11:33:21 來(lái)源:億速云 閱讀:150 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容主要講解“PHP模板引擎的原理是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“PHP模板引擎的原理是什么”吧!

開(kāi)發(fā)一個(gè)web項(xiàng)目,通常分為兩部分,一部分是GUI,即界面、美工,使用HTML,CSS,JS編寫(xiě),另一部分則是業(yè)務(wù)邏輯,即程序、功能,使用PHP編寫(xiě)。而模板引擎則是聯(lián)系這兩部分的“橋梁”,可理解成一個(gè)PHP類,里面定義了許多方法,實(shí)現(xiàn)了將PHP的原始輸出加載上界面樣式后再輸出。

沒(méi)用模板之前的編寫(xiě)的代碼是這樣的:

<?php

$title = “標(biāo)題”;

$content = “內(nèi)容”;

?>

<html>

<head><title><?php echo $title; ?></title></head>

<body><?php echo $content; ?></body>

</html>

這樣的話美工與邏輯沒(méi)有分離,簡(jiǎn)單的說(shuō)就是PHP程序員不僅要寫(xiě)程序還要精通美工,這往往十分困難,因此需要將這兩部分工作分開(kāi)。

在此通過(guò)自己創(chuàng)建一個(gè)簡(jiǎn)單的模板引擎為例子,更好的體會(huì)模板引擎的原理。

之前說(shuō)了開(kāi)發(fā)一個(gè)web項(xiàng)目分成GUI與業(yè)務(wù)邏輯兩部分,因此我們創(chuàng)建兩個(gè)文件夾,一個(gè)命名為“templates”,里邊存放模板,新建一個(gè)tpl.html文件,另一個(gè)命名為“PHP”,里邊存放業(yè)務(wù)邏輯,新建一個(gè)index.php文件。

tpl.html文件代碼通常是這樣:

<html>

<head><title><{$title}></title></head>

<body><{ $content;}></body>

</html>

可以看出來(lái),和之前的代碼相比,tpl.html中只有html代碼,沒(méi)有php代碼,但是增加了新的標(biāo)簽,這類標(biāo)簽是自己定義的,里面的內(nèi)容只有經(jīng)過(guò)模板引擎編譯后才能被識(shí)別,編譯后的文件存放在“templates_c”文件夾下。這個(gè)文件主要是界面設(shè)計(jì)用的,將大量使用到CSS,JS等技術(shù)。

這時(shí)候tpl.html和index.php仍舊是分離的,互不干擾,因此需要一個(gè)“橋梁”連接,即模板引擎,其實(shí)就是一個(gè)PHP類,故在此可以創(chuàng)建一個(gè)mytpl.class.php的PHP文件。

mytpl.class.php文件通常定義一個(gè)類MyTpl,類中需定義一個(gè)數(shù)組tpl_var[]用于存放tpl.html中自定義內(nèi)容標(biāo)簽的參數(shù),此外還需定義一些方法,這些方法最主要的目的是將tpl.hml中無(wú)法識(shí)別的的內(nèi)容標(biāo)簽轉(zhuǎn)換成PHP語(yǔ)句,然后再寫(xiě)到一個(gè)“templates_c”文件夾下的tpl_c.html中,這個(gè)過(guò)程就是所謂的編譯。

通常tpl_c.html文件的代碼是這樣的:

<html>

<head><title><?php echo $this->tpl_var[“title”]; ?></head>

<body><?php echo $this->tpl_var[“content”]; ?}></body>

</html>

可以看出上面的代碼是可以被識(shí)別的,因?yàn)樽远x的內(nèi)容標(biāo)簽已經(jīng)被替換成PHP語(yǔ)句了,但是title和content的值是多少我們還不得而知,這時(shí)候之前創(chuàng)建的index.php要上場(chǎng)了.

index.php通常它代碼是這樣的:

include  “tpl.class.php文件”;//加載模板引擎

$tpl = new MyTpl();//實(shí)例化一個(gè)模板類

$title = “標(biāo)題”;

$content = “內(nèi)容”;

$tpl->assign(“title”,$title);//調(diào)用模板類中的方法,分配變量

$tpl->assign(“content”,$content);

$tpl->display(“tpl.html”);//調(diào)用模板類中的方法,用于顯示編譯后的內(nèi)容

上面的代碼只是一些簡(jiǎn)單的描述代碼,其中的變量的值可以是直接定義的也可以是從數(shù)據(jù)庫(kù)中獲取的,此外該文件還可以編寫(xiě)一些復(fù)雜的PHP程序,這也就是之前說(shuō)的業(yè)務(wù)邏輯。

這樣GUI和業(yè)務(wù)邏輯的工作就分離了,美工設(shè)計(jì)人員只需要編寫(xiě)模板文件就可以改變web的界面,而PHP程序員則可以專心編寫(xiě)自己的程序。

公司內(nèi)部一般都有自己的模板引擎,而通常模板引擎自己寫(xiě)的話完全沒(méi)有必要,因?yàn)槭忻嫔弦呀?jīng)有一些很成熟的模板引擎了,比如Smarty,我們只需要懂得如何使用它就好了。

到此,相信大家對(duì)“PHP模板引擎的原理是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI