php中Smarty模板初體驗

來源:互聯網
上載者:User

下面介紹一下Smarty模板引擎的特性:

  1. 速度:採用Smarty編寫的程式可以獲得最大速度的提高,這一點是相對於其它的模板引擎技術而言的。

  2. 編譯型:採用Smarty編寫的程式在運行時要編譯成一個非模板技術的PHP檔案,這個檔案採用了PHP與HTML混合的方式,在下一次訪問模板時將WEB請求直接轉換到這個檔案中,而不再進行模板重新編譯(在來源程式沒有改動的情況下)

  3. 緩衝技術:Smarty選用的一種緩衝技術,它可以將使用者最終看到的HTML檔案快取成一個靜態HTML頁,當設定Smarty的cache屬性為true時,在Smarty設定的cachetime期內將使用者的WEB請求直接轉換到這個靜態HTML檔案中來,這相當於調用一個靜態HTML檔案。

  4. 外掛程式技術:Smarty可以自訂外掛程式。外掛程式實際就是一些自訂的函數。

  5. 模板中可以使用if/elseif/else/endif。在模板檔案使用判斷語句可以非常方便的對模板進行格式重排。

  使用Smarty模板版本Smarty-3.0.8,解壓後檔案目錄如下:

  於是開始了我的Smarty之旅嘍——

  Step 1

  在伺服器網頁檔案夾中建立一個smartytest檔案夾,只取libs目錄中的檔案,複製到smartytest檔案夾下,更名為smarty

  Step 2

  在test中建立目錄templates,並在該目錄下建立四個檔案夾cache、configs、templates、templates_c,建成的檔案夾形式如

  Step 3

  寫一個設定檔,通過它可以實現與Smarty的串連,而且把它寫成單獨的檔案可以在寫不同頁面時重複寫相同的代碼(當然也可以把它寫成類形式,便於自訂),這裡我把它檔案名稱定為config.php

複製代碼 代碼如下:<?php
//擷取當前檔案夾所在的絕對路徑 H:\wamp\www\smartytest\
define('SMARTY_PATH',substr(dirname(__FILE__),0,-9));
//擷取templates檔案夾的絕對路徑 H:\wamp\www\smartytest\templates
define('TEMPLATES_PATH',SMARTY_PATH.'templates/');
require SMARTY_PATH.'smarty/Smarty.class.php';
$smarty = new Smarty;
//定義目錄路徑
$smarty->template_dir = TEMPLATES_PATH.'templates/';
$smarty->complile_dir = TEMPLATES_PATH.'templates_c/';
$smarty->config_dir = TEMPLATES_PATH.'configs/';
$smarty->cache_dir = TEMPLATES_PATH.'cache/';
//定義左右結束符 {% 和 %}
$smarty->left_delimiter = '{%';
$smarty->right_delimiter = '%}';
//關閉緩衝
$smarty->caching = false;
//關閉調試
$smarty->debugging = false;
?>

  Step 4
  寫一個簡單的模板檔案命名為index.tpl,放到templates\templates目錄下 複製代碼 代碼如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Smarty</title>
</head>
<body>{%$hello%}</body>
</html>

  Step 5
  寫一個PHP檔案,命名為index.php,放在templates檔案目錄下 複製代碼 代碼如下:<?php
require 'config.php';
$smarty->assign('hello','Hello Word');
$smarty->display('index.tpl');
?>

現在檔案目錄為

  Step 6

  測試檔案:

  

  總結:使用Smarty模板過程中也遇見了問題,比如Smarty的目錄可以自己設定,自訂性較強,因此對Smarty的教程有很多版本(我在書上看到一個版本,百度百科也有另一種),結果兩個都參考就不明白怎麼放了,最後還是使用百度百科的那種(也就是上文所說);其次在百度百科中的代碼是複製過來的,結果在使用時出現了syntax error, unexpected T_VARIABLE錯誤,看著代碼都很對啊,就是出錯,最後尋找原因,原來是網頁中的全形空格所致,所以在網頁上複製的代碼的莫名錯誤最好的辦法就是把空格都去了重新寫;注意在寫PHP檔案時hello沒有前邊的$符號,而在tpl檔案中引用時就必須得加上$符號。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.