用 Smarty 分離 PHP 應用程式中的形式與功能

來源:互聯網
上載者:User
隨意混用 PHP 與其他 Web 頁面標記將導致程式邏輯、HTML、層疊樣式表(Cascading Style Sheets,CSS)和 JavaScript 處於混亂狀態,使維護成為一項艱巨的任務。Smarty 模板引擎可以將形式與功能分離。

PHP Web 應用程式易於上手。PHP 語言的文法整潔且易於掌握。可以將 PHP 與 HTML、JavaScript 和 CSS 直接混用以快速產生可視結果。而且,把 PHP 應用程式部署到您自己的 Web 服務器或託管服務中只是小菜一碟。

但是混用 PHP 與其他頁面標記也是一項責任。PHP 代碼通常是含有程式邏輯、結構化查詢語言 (SQL)(Structured Query Language,SQL)查詢、函數、類、開發人員注釋、HTML、CSS 樣式和指令碼的複雜 web(不是開玩笑)。更糟糕的是,把內容從 PHP、echo 發送到輸出緩衝區有很多種方法。維護這樣混亂的頁面十分費力。對代碼或標記做出無關緊要的更改會帶來嚴重破壞,並且增強頁面可能需要設計人員與程式員的共同努力。使用 PHP,形式(頁面的布局)及功能(頁面的目的和構造)將被混在一起。

在理想情況下,形式與功能是相互獨立的。例如,CSS 和 HTML 一定應該如此。CSS 是形式,而 HTML 是功能。在使用 PHP 的情況下,如果頁面標記和代碼能夠分離將是十分理想的。代碼將處理輸入,制定決策並產生顯示資料,而標記將期待獲得資料並提供所需的支架以渲染資訊。

例如,首頁的標記可能留下一個 “填空” (fill in the blank) 以供使用者登入,以及其他預留位置以供儲存使用者的映像和重要訊息。此模板 —— 這樣命名是因為它將提供頁面顯示的模式 —— 只面向設計人員,設計人員將控制頁面的整體外觀並留下名稱、圖片和其他資料的預留位置。代碼只是為預留位置提供資料。開發人員的任務仍然主要集中在計算上。

當然,形式與功能必須協作。如果模板期望獲得以美元為單位的金額,則代碼不應當提供 URL。如果模板期望獲得對象,則代碼不應當提供列表。因此,模板系統必須將表單與函數分離,但還必須在兩者之間建立聯絡。

最流行的 Web 應用程式程式設計語言(Perl、Python、Ruby、Java™)都有模板引擎,而 PHP 也不例外。在搜尋引擎中鍵入 PHP template engine,然後您可能會找到 25 個以上的選項(有關強調所研究的每個引擎功能的列表 The PHP Template Engine Roundup,請參閱 參考資料)。

一些 PHP 模板引擎進行了速度最佳化。其他 PHP 模板引擎旨在鼓勵分離表單與函數的同時簡化使用。在某些包中,預留位置是在 PHP 本身中描述的,而其他解決方案都有一種自訂的簡短程式設計語言。如何選擇模板引擎在很大程度上取決於要求,因此適宜進行少量研究和實驗。

在這裡,我向您介紹 Smarty,它是最流行的 PHP 模板引擎之一。Smarty “代碼” 有它自己的文法和運算子擴充列表,但是系統並不難學。閱讀或瀏覽 Smarty 文檔,以便熟悉它的所有功能。從 Smarty 的小修改開始,根據需求擴充您的技能,然後越來越精通。

獲得 Smarty

Smarty Web 網站維護著一張活動郵件清單、一個支援論壇和一個 Internet Relay Chat (IRC) 論壇(請參閱 參考資料)。開發進行中,而本文基於 V2.6.18 版本,該版本發佈於 2007 年 3 月 7 日。

Smarty 有兩個方面:PHP API (API) 和顯示引擎。應用程式代碼將調用 API 把代碼變數與模板預留位置關聯起來,而顯示引擎將解釋 Smarty 標記、執行迴圈、引用預留位置和顯示最終結果。Smarty 功能包括:

<
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.