摘要:還有安全特性,可以令模板源碼有強制的約束。并且業務邏輯和顯示邏輯分離,是的一個設計理念。是一個模板引擎,在應用程序中,當作層視圖層的組件來使用。不一定保證良好的程序設計或者達成顯示分離的目的,這還得需要開發者和模板設計師的努力。
一、 Smarty的由來
Smarty的主要設計理念是:干凈的分離顯示邏輯和程序代碼,在PHP為后端情況下,Smarty模板應用在前端,增強PHP的前后端交互性能,并且給前后端分離情況下程序員的開發、部署帶來方便,語法簡單易懂,即使不懂PHP也完全可以掌握Smarty。
有人會說,為什么不直接用PHP進行前臺渲染?
PHP與模板分離的重要性
語法:模板語法通常是更符合HTML標記的語義。PHP語法可以在程序代碼中運作的很好, 但如何混合在HTML中就不然。Smarty簡單的{標簽}語法是為了表達顯示邏輯而設計的。 Smarty讓你的模板更專注于頁面顯示,而不用關注太多“代碼”。 這可以讓模板開發得更快速,維護更容易。 學習Smarty的語法不需要懂得PHP的相關知識,程序員或非程序員都能很快上手。
松耦合:當PHP代碼混合在模板中,那將無法約束任意的邏輯代碼被寫到模板上。 Smarty分隔了模板和PHP,控制了頁面顯示和業務邏輯的分離。 Smarty還有安全特性,可以令模板源碼有強制的約束。
頁面設計者和PHP
一個通常的問題是:“頁面設計者既然要學一門語法,為什么不學PHP?”。當然頁面設計者可以 學習PHP,而且他們可能已經非常熟悉PHP。問題并非是他們是否有能力學習PHP,問題在于HTML混合PHP的情況,如果設計者使用PHP,那么就很容易會將一些不屬于模板的PHP代碼寫到模板上。 (正如當他們只需要一把小刀但你塞給他們一把瑞士軍刀一樣)。 你可以教導他們程序設計的規則,但這可能是他們不真正需要學習的事情(他們不是開發者)。 而且PHP手冊也是非常繁多難以篩選出你需要的部分進行教導, 就像你給了車子的買主一本汽車工廠里面的裝配手冊,而不是汽車的操作手冊一樣。 Smarty恰到好處地給予了設計者需要的工具,而提供了開發者更好地控制這些工具的方法。 這種簡單的標簽語法也是非常受到設計者的歡迎,幫助了設計者流水式地組織管理模板。
二、Smarty是什么一句話概括:Smarty是一個PHP的模板引擎
更準確的說:Smarty可以更好的幫助開發者分離程序邏輯和頁面顯示,如在前后端分離的項目中,前后端為不同開發人員,那么Smarty便可以做到在互相不影響的情況下完美的實現前后臺的協作。并且業務邏輯和顯示邏輯分離,是Smarty的一個設計理念。二、Smart的一些特性
非常快速。
比PHP內嵌到HTML中的做法要有效率的多。
比PHP內嵌到HTML中的做法要有效率的多。
無模板解析的開銷,只編譯一次。
僅當模板文件被修改后才會聰明地重新編譯。
你可以很容易創建自己的函數和變量修飾器,非常具有可擴展性。
可配置的模板定界符語法{delimiter}, 你可以使用{$foo}, {{$foo}}, 等等。
條件判斷語句 {if}..{elseif}..{else}..{/if} 會直接使用PHP解析,所以{if...}后可以是簡單或者較復雜的表達式。
支持無限的 sections, if等的嵌套。
內置緩存支持。
任意的模板源。
模板繼承 可以輕松管理模板和內容。
三、Smarty是怎么工作的?在底層,Smarty“編譯”(簡單地復制和轉換)模板為PHP代碼。這在每個模板第一次調用時發生,然后編譯后的代碼將被一直使用。Smarty處理地非常的好,所以模板設計師僅編輯模板而不需要關注編譯的事情。這方法保持了模板的易維護,同時也保證了運行時是PHP代碼的方式運行,這樣PHP代碼就可以通過類似APC等OP-CODE緩存器來加速了。
四、Smarty不是什么Smarty不是一個應用開發框架。Smarty不是一個MVC。Smarty不像Zend Framework, CodeIgniter, PHPCake, 或者其他的PHP應用開發框架。
Smarty是一個模板引擎,在應用程序中,當作V層(視圖層)的組件來使用。 Smarty可以很輕易連接到其他的視圖引擎中。 和其他的軟件技術一樣,Smarty也有著學習曲線。 Smarty不一定保證良好的程序設計或者達成顯示分離的目的,這還得需要開發者和模板設計師的努力。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26074.html
摘要:體現了業務與顯示的分離,盡量分離。就負責判斷條件,并取出數據來。顯示的工作盡量靠前頁面緩存緩存,重要概念。減輕了數據庫的壓力。控制局部不緩存在標簽中控制,該標簽不緩存。模板調用特殊方法使用對象注冊的方式來解決。文件命名函數名定 模板 數據與表現層的標簽分離 smarty是PHP 與 HTML代碼的分離 小型模板類 $smarty 的工作流程: 把需要顯示的全局變量,賦值塞到對象內部的...
摘要:一概念變量修飾器調節器可用于變量,自定義函數和字符串。請使用符號和修飾器名稱應用修飾器。變量修飾器由賦予的參數值決定其行為。與之相反將變量值轉成大寫字母所有字母,無參數。它與修飾器的效果剛好相反。它們會按復合的順序來作用于變量,從左到右。 一、概念 變量修飾器(調節器)可用于變量,自定義函數和字符串。 請使用‘|’符號和修飾器名稱應用修飾器。 變量修飾器由賦予的參數值決定其行為。 參數...
摘要:最近工作中用到模板引擎,整理了一些用到的模板函數。模板中獲取服務端的值參數名模板中獲取服務端的值參數名模板中獲取服務端的值可以獲取或的值。 最近工作中用到 Smarty 模板引擎,整理了一些用到的模板函數。 假設 smarty 的定界符為 {}。 模板中獲取服務端 $_GET 的值: {$smarty.get.參數名} 模板中獲取服務端 $_POST 的值: {$smarty.post...
摘要:命名空間的作用解決重名問題。不同的命名空間中,可以存在相同類名和函數名。完全限定名稱,或包含了全局前綴操作符的名稱,例如,或。源碼分享書簽從零開始打造自己的框架使用命名空間基礎使用命名空間后備全局函數常量基礎安裝進階安裝 目標 本篇,我們來實現加載控制器、數據查詢和頁面渲染。 原文地址:http://www.voidking.com/2017/... 加載控制器 控制器 在app目錄下...
閱讀 2847·2021-09-10 10:51
閱讀 2215·2021-09-02 15:21
閱讀 3206·2019-08-30 15:44
閱讀 869·2019-08-29 18:34
閱讀 1652·2019-08-29 13:15
閱讀 3322·2019-08-26 11:37
閱讀 2697·2019-08-26 10:46
閱讀 1107·2019-08-26 10:26