自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺議PHP程序開(kāi)發(fā)中的模板選擇

開(kāi)發(fā) 后端
本文介紹的是PHP程序開(kāi)發(fā)中的模版選擇,希望對(duì)你有幫助,一起來(lái)看。

關(guān)于PHP的模板的確是一個(gè)說(shuō)起來(lái)容易做起來(lái)麻煩的事情。隨便一數(shù)大概有20種以上的選擇,光pear里面就包含了5中不同的模板,實(shí)在讓人頭疼。 

千萬(wàn)不要人云亦云的說(shuō)這個(gè)好那個(gè)不好,選擇模板之前最好先應(yīng)該搞清楚模板的真正目的是什么? 簡(jiǎn)單地說(shuō),模板的核心目的就是一個(gè) team work。主要的作用方式有兩種:

1、分離HTML和PHP使網(wǎng)頁(yè)設(shè)計(jì)師和PHP程序員合作更加愉快。 

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

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

如果只有你一個(gè)php程序員但是需要和其他的網(wǎng)頁(yè)設(shè)計(jì)人員一起協(xié)同工作,那么選擇能夠分離HTML和PHP的模板就可以了,phplib (現(xiàn)在好像集成到 Pear 里面了 http://pear.php.net/package/HTML_Template_PHPLIB)或者 FastTemplate 都是這樣的東西,很簡(jiǎn)單容易上手。 

如果你的網(wǎng)站界面比較丑陋并且主要由程序員來(lái)完成,但是功能比較復(fù)雜更需要強(qiáng)大的擴(kuò)展功能,需要分離各個(gè)層次包括顯示邏輯,那么不要用什么特別的東西,PHP本身就是最好的模板了。

要注意的是在這種情況下,你要非常認(rèn)真的設(shè)計(jì)你的程序,始終記住要分離的不是PHP和 html 而是事務(wù)邏輯(business logic )和顯示邏輯(presentation logic)。這也是為什么我一直對(duì)于Smarty 這種東西非常的抵觸, 因?yàn)檫@個(gè) Smarty 的語(yǔ)法太復(fù)雜了太強(qiáng)大了,幾乎重新發(fā)明了一種腳本語(yǔ)言東西,(即使是PHP的程序員也要重新學(xué)習(xí)它)。更讓人費(fèi)解的是 這種腳本 越是強(qiáng)大,越容易讓人將事務(wù)邏輯(business logic )和顯示邏輯(presentation logic)混在一起, 破壞了模板的初衷。

如果你既想HTML和PHP分離,得到更好的視覺(jué)設(shè)計(jì),又想整個(gè)系統(tǒng)有非常強(qiáng)大的擴(kuò)展能力能夠適應(yīng)html,xml,wml各種界面,而且不用去學(xué)習(xí)復(fù)雜的語(yǔ)法的同時(shí)提供較高的運(yùn)行效率,那么這就是一個(gè)相當(dāng)有挑戰(zhàn)性的問(wèn)題了。壞消息是目前還沒(méi)有一個(gè)成熟的模板真正能夠達(dá)到這樣的要求,好消息是完成這樣的一個(gè)模板并不是很難,如果你嘗試過(guò)Zope或者是ColdFusion就會(huì)發(fā)現(xiàn)這種模板的影子,(wact http://wact.sourceforge.net/ 和 phptal http://phptal.sourceforge.net/ 就是在向這個(gè)方向發(fā)展,應(yīng)該很有前途)。

模板和數(shù)據(jù)的結(jié)合(模板的調(diào)用)方式主要有兩種:推的方式和拉的方式。 

推的方式是用PHP將數(shù)據(jù)推給模板,就是說(shuō)需要程序員明確地為模板中的每一個(gè)變量賦值,將他們綁起來(lái)。而拉的方式則像把php 和 html 混在一起一樣,模板種的變量主動(dòng)把數(shù)據(jù)拽進(jìn)來(lái)。說(shuō)到模板就不能不提到另外兩種東西:

phphtmllib 和 quickform(http://pear.php.net/package/HTML_QuickForm) 這兩種東西是用傳統(tǒng)的方式來(lái)通過(guò)各種頁(yè)面構(gòu)件來(lái)完成HTML的頁(yè)面的 整個(gè)頁(yè)面的構(gòu)造完全掌握再程序員手里,也許很多編寫過(guò)傳統(tǒng)GUI桌面程序的程序員更喜歡這種方式。 

更加漂亮的方案 

如果做商業(yè)軟件的話,F(xiàn)lash應(yīng)該是更漂亮的方案(別搞錯(cuò)了,別以為就你知道php支持ming 和swf庫(kù)可以動(dòng)態(tài)生成 Flash,我說(shuō)的不是這個(gè)。) 我要說(shuō)的是支持Flash Remoting 的方案,這種東西才是真正有意義的PHP和flash的結(jié)合。由視覺(jué)設(shè)計(jì)師完成flash部分,PHP 程序員通過(guò) flash remoting 的方式將 數(shù)據(jù)發(fā)送到 flash 做成的客戶端中。 

目前有兩種方案: 

AMFPHP 

http://www.amfphp.org/

由于Macromedia Flash Remoting 傳輸數(shù)據(jù)時(shí) 使用的是一種特有的更加高效數(shù)據(jù)格式, 所以AMFPHP通過(guò)分析數(shù)據(jù)格式,

在服務(wù)器端構(gòu)造了相應(yīng)的php類來(lái)接收,解析和編碼這些數(shù)據(jù)從而達(dá)到交換信息的功能(就像Samba一樣,應(yīng)該屬于一種 Hacking 吧)。 

PHPObject

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

PHPObject 則采用了另外一種方法,通過(guò)在flash中嵌入一些acti****cript的組件通過(guò)開(kāi)放的格式soap來(lái)傳送數(shù)據(jù)。其實(shí)關(guān)于PHP的模板還牽扯到很多其它的問(wèn)題,一時(shí)半會(huì)我也只能寫這么多了。

 

責(zé)任編輯:于鐵 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2009-12-07 16:25:13

PHP解釋性模板Php

2010-04-29 16:46:59

Unix進(jìn)程

2015-09-08 14:42:17

Android性能優(yōu)化

2013-07-04 14:54:24

Android

2011-07-07 14:14:41

PHP模版

2009-12-01 19:28:16

PHP模板

2011-07-15 14:01:50

PHP模板引擎

2015-07-31 14:11:01

內(nèi)滾動(dòng)布局

2011-07-07 13:48:35

Smarty

2015-05-05 10:51:32

php頁(yè)面跳轉(zhuǎn)方法

2011-05-19 10:26:32

PHP

2022-08-09 18:08:36

Firefox瀏覽器多賬戶容器

2009-11-30 13:15:27

PHP模板Smarty

2017-05-08 08:34:24

2015-07-02 14:38:44

2009-06-01 11:16:48

PHP網(wǎng)站開(kāi)發(fā)變量作用域

2013-07-08 17:06:36

PHP開(kāi)發(fā)從程序化到面向?qū)ο?/a>程序化

2010-11-16 09:23:13

敏捷開(kāi)發(fā)Visual Stud

2016-02-19 10:31:52

云計(jì)算云應(yīng)用paas

2018-11-20 14:48:54

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)