關於template的思考,對模板熟悉者請進。_PHP教程

來源:互聯網
上載者:User
用PHP進行項目開發,由於PHP的解釋執行,我們經常會面臨執行速度和通用性、編程效率產生矛盾,然後又如何取捨的問題。PHP的早期版本都是面向過程的,以執行速度快著稱,在開發複雜應用時日顯捉襟見肘,隨著4.3及以後版本的發行可以看到PHP將向物件導向方向發展,
用PHP進行項目開發,由於PHP的解釋執行,我們經常會面臨執行速度和通用性、編程效率產生矛盾,然後又如何取捨的問題。PHP的早期版本都是面向過程的,以執行速度快著稱,在開發複雜應用時日顯捉襟見肘,隨著4.3及以後版本的發行可以看到PHP將向物件導向方向發展,於是大家逐漸習慣寫大量的基類,大量的使用include_once,這樣使我們的開發變得有序,程式邏輯更清晰,當我們開發完成之後,發現執行效率不如以前,PHP在解析和檔案調用上花費過多的開銷,一個頁面使用十幾二十個include會將PHP拖垮,我們的注意力開始從資料庫轉向PHP程式的最佳化,從一方面來講,大型資料驅動用物件導向模式無可非議,另一方面,PHP的代碼應該突出類C語言的簡潔高效。於是我們迷茫了:如何保證大型應用的執行效率?這是我思考已久的問題。
也許上面的話題涉及的太多,下面我只想具體談談大量模板處理的問題:對於幾百個頁面的規模,每頁都有動態資料,少量頁面涉及較多的變數,如何方便地實行模板變數替換?難道直接用set_var()一行一行地替換?
模板機制的廣泛採用使PHP代碼和HTML混雜在一起成為曆史,解決了前台輸出和背景程式的衝突,前台對程式員是透明的,同樣後台對美編也是透明的,優越性不言而喻,而我們所付出的代價只是約定好一組變數名,並簡單的替換一下而已。然而有幾百個網頁就有幾百個模板,每一個頁面可能有數十個變數,於是這一簡單的變數替換工作也變成了累贅,以PHPLIB的template為例,就需要幾十行set_var(),我開始設想一個VIEW類,它將繼承template,定義一個數群組成員儲存用來替換的變數名表,提供setvalue()和output()方法,通過setvalue($key,$value)來賦值,很明顯$value就是從資料庫取出的資料,$key是將要替換的變數,痛點就是如何確定$key(即HTML中{}中的名字)的值, 舉個例子,比如在模板檔案my.tpl中象這樣:

您的使用者名稱是
職位是 在PHP檔案中應該象這樣($name和$position是動態資料): …… $tp->set_file("filehandle","my.tpl"); $vararr=array("tpname"=>$name,"tpposition=>$position); tp->set_var($vararr); tp->pparse("out","filehandle"); 在倒數第二行我用數組傳遞要替換的變數列表,一個頁面有一二十個模板變數是正常,問題是能不能方便地一次性設定好數組下標(即要替換的變數名例如"tpname"和"tpposition"),否則只能一行行地set_var,目前我仍在探索中,歡迎大家踴躍交流這方面的解決辦法。

http://www.bkjia.com/PHPjc/531885.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/531885.htmlTechArticle用PHP進行項目開發,由於PHP的解釋執行,我們經常會面臨執行速度和通用性、編程效率產生矛盾,然後又如何取捨的問題。PHP的早期版本都...

  • 聯繫我們

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