淺議PHP程式開發中的模板選擇

來源:互聯網
上載者:User
程式|模板

關於PHP的模板的確是一個說起來容易做起來麻煩的事情。隨便一數大概有20種以上的選擇,光pear裡面就包含了5中不同的模板,實在讓人頭疼。

千萬不要人云亦云的說這個好那個不好,選擇模板之前最好先應該搞清楚模板的真正目的是什嗎? 簡單地說,模板的核心目的就是一個 team work。主要的作用方式有兩種:

1、分離HTML和PHP使網頁設計師和PHP程式員合作更加愉快。

2、分離顯示邏輯和事物邏輯,使得核心事務邏輯的變更和應用程式的擴充更加容易和靈活,也就是說使得程式員之間合作更加愉快。(這一點經常被人們忽視或者誤解,總以為把PHP從HTML中弄出去就叫分離顯示邏輯和事物邏輯了,如果這樣當初又何苦讓PHP和html 混在一起呢?)

搞清楚這個模板的真正目的是什麼,就容易做出正確的選擇了。

如果只有你一個php程式員但是需要和其他的網頁設計人員一起協同工作,那麼選擇能夠分離HTML和PHP的模板就可以了,phplib (現在好像整合到 Pear 裡面了 http://pear.php.net/package/HTML_Template_PHPLIB)或者

FastTemplate 都是這樣的東西,很簡單容易上手。

如果你的網站介面比較醜陋並且主要由程式員來完成,但是功能比較複雜更需要強大的擴充功能,需要分離各個層次包括顯示邏輯,那麼不要用什麼特別的東西,PHP本身就是最好的模板了。要注意的是在這種情況下,你要非常認真的設計你的程式,始終記住要分離的不是PHP和 html 而是事務邏輯(business logic )和顯示邏輯(presentation logic)。這也是為什麼我一直對於Smarty 這種東西非常的抵觸, 因為這個 Smarty 的文法太複雜了太強大了, 幾乎重新發明了一種指令碼語言東西, (即使是PHP的程式員也要重新學習它)。更讓人費解的是 這種指令碼 越是強大,越容易讓人將事務邏輯(business logic )和顯示邏輯(presentation logic)混在一起, 破壞了模板的初衷。

如果你既想HTML和PHP分離,得到更好的視覺設計,又想整個系統有非常強大的擴充能力能夠適應html,xml,wml各種介面,而且不用去學習複雜的文法的同時提供較高的運行效率,那麼這就是一個相當有挑戰性的問題了。壞訊息是目前還沒有一個成熟的模板真正能夠達到這樣的要求,好訊息是完成這樣的一個模板並不是很難,如果你嘗試過Zope或者是ColdFusion就會發現這種模板的影子,

(wact http://wact.sourceforge.net/ 和 phptal http://phptal.sourceforge.net/ 就是在向這個方向發展,應該很有前途)。

模板和資料的結合(模板的調用)方式主要有兩種:推的方式和拉的方式。

推的方式是用PHP將資料推給模板,就是說需要程式員明確地為模板中的每一個變數賦值,將他們綁起來。

而拉的方式則像把php 和 html 混在一起一樣,模板種的變數主動把資料拽進來。

說到模板就不能不提到另外兩種東西:

phphtmllib 和 quickform(http://pear.php.net/package/HTML_QuickForm) 這兩種東西是用傳統的方式來通過各種頁面構件來完成HTML的頁面的 整個頁面的構造完全掌握再程式員手裡,也許很多編寫過傳統GUI傳統型程式的程式員更喜歡這種方式。

更加漂亮的方案

如果做商業軟體的話,Flash應該是更漂亮的方案(別搞錯了,別以為就你知道php支援ming 和swf庫可以動態產生 Flash,我說的不是這個。) 我要說的是支援Flash Remoting 的方案,這種東西才是真正有意義的PHP和flash的結合。由視覺設計師完成flash部分,PHP 程式員通過 flash remoting 的方式將 資料發送到 flash 做成的用戶端中。

目前有兩種方案:

AMFPHP

http://www.amfphp.org/

由於Macromedia Flash Remoting 傳輸資料時 使用的是一種特有的更加高效資料格式, 所以AMFPHP通過分析資料格式,在伺服器端構造了相應的php類來接收,解析和編碼這些資料從而達到交換資訊的功能(就像Samba一樣,應該屬於一種 Hacking 吧)。

PHPObject

http://ghostwire.com/resources/phpobject/

PHPObject 則採用了另外一種方法,通過在flash中嵌入一些actionscript的組件通過開放的格式soap來傳送資料。

其實關於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.