- 相關(guān)推薦
PHP語言的優(yōu)點(diǎn)及缺點(diǎn)
PHP(PHP:Hypertext Preprocessor)是一種在電腦上運(yùn)行的腳本語言,主要用途是在于處理動(dòng)態(tài)網(wǎng)頁,也包含了命令行運(yùn)行接口(command line interface),或者產(chǎn)生圖形用戶界面(GUI)程序。PHP語言有哪些優(yōu)點(diǎn)和缺點(diǎn)呢?下文將為大家一一講述。歡迎閱讀!
優(yōu)點(diǎn)
1.入門快,有其它語言基礎(chǔ)的程序員二周左右的時(shí)間就可以入門,一個(gè)月左右的時(shí)間基本上就可以開發(fā)簡單的項(xiàng)目了。
2.開發(fā)成本低,PHP最經(jīng)典的組合就是:Linux + Apache + MySQL + PHP。非常適合開發(fā)中小型的web應(yīng)用,因?yàn)樯鲜秩菀祝蚤_發(fā)的速度比較快。而且所有的軟件都是開源免費(fèi)的,可以減少投入。
3.PHP是解釋性的腳本語言,寫完代碼以后即可以執(zhí)行,不像c,java,c++等語言還需要去編譯執(zhí)行,相對來說比較節(jié)省時(shí)間。
4.相對來說,PHP程序員的薪水的平均工資要比c,c++,java程序員的平均工資要低一些,特別是對于中小型企業(yè)來說可以節(jié)約一些成本。
5.配置及部署相對簡單一些,對比JAVA開發(fā)來說,JAVA開發(fā)的配置就復(fù)雜多了,什么Structs、Spring、Hibernate、Tomcat等等很多地方都需要配置,甚至你在程序中每寫一個(gè)SQL語句都需要先在Hibernate中配置一下,有時(shí)重新部署一個(gè)class文件或jar文件還可能需要重啟Web服務(wù)器(Tomcat或Resin或其它的Web服務(wù)器)使新部署的庫文件生效。PHP開發(fā)中主要是PHP自身的配置文件及Web服務(wù)器的配置(如Apache或Nginx或Lighttpd等),相對于JAVA來說還是簡單一些,而且新修改了文件以后不需要重新啟動(dòng)Web即可以立即生效。
缺點(diǎn)
1.對多線程支持不太好,大多數(shù)時(shí)候我們只能簡單的模擬去實(shí)現(xiàn)的,Via。
2.對面向?qū)ο蟮闹С忠膊惶茫鄬碚fPHP5的面向?qū)ο笥辛瞬簧俚奶嵘?/p>
3.編碼規(guī)范不太統(tǒng)一,如刪除用戶,有的人用_user,而有的人可能用User,如果不提前制定編碼規(guī)范,這種情況可能會(huì)經(jīng)常發(fā)生,因?yàn)槊總(gè)人都有自己的編碼習(xí)慣。
4.語法不太嚴(yán)謹(jǐn),比如變量不需要定義就可以使用,在c,java,c++中變量是必須先定義以后才可以使用的。
【相關(guān)閱讀】PHP語言簡介
PHP(PHP:Hypertext Preprocessor)是一種在電腦上運(yùn)行的腳本語言,主要用途是在于處理動(dòng)態(tài)網(wǎng)頁,也包含了命令行運(yùn)行接口(command line interface),或者產(chǎn)生圖形用戶界面(GUI)程序。
PHP最早由Rasmus Lerdorf在1995年發(fā)明,而現(xiàn)在PHP的標(biāo)準(zhǔn)由PHP Group和開放源代碼社區(qū)維護(hù)。PHP以PHP License作為許可協(xié)議,不過因?yàn)檫@個(gè)協(xié)議限制了PHP名稱的使用,所以和開放源代碼許可協(xié)議GPL不兼容。
PHP的應(yīng)用范圍相當(dāng)廣泛,尤其是在網(wǎng)頁程序的開發(fā)上。一般來說PHP大多運(yùn)行在網(wǎng)頁服務(wù)器上,通過運(yùn)行PHP代碼來產(chǎn)生用戶瀏覽的網(wǎng)頁。PHP可以在多數(shù)的服務(wù)器和操作系統(tǒng)上運(yùn)行,而且使用PHP完全是免費(fèi)的。根據(jù)2007年4月的統(tǒng)計(jì)數(shù)據(jù),PHP已經(jīng)被安裝在超過2000萬個(gè)網(wǎng)站和100萬臺(tái)服務(wù)器上。
開發(fā)歷史
PHP原本的簡稱為Personal Home Page,是Rasmus Lerdorf為了要維護(hù)個(gè)人網(wǎng)頁,而用c語言開發(fā)的一些CGI工具程序集,來取代原先使用的Perl程序。最初這些工具程序用來顯示Rasmus Lerdorf的個(gè)人履歷,以及統(tǒng)計(jì)網(wǎng)頁流量。他將這些程序和一些窗體解釋器集成起來,稱為PHP/FI。PHP/FI可以和數(shù)據(jù)庫連接,產(chǎn)生簡單的動(dòng)態(tài)網(wǎng)頁程序。Rasmus Lerdorf在1995年6月8日將PHP/FI公開釋出,希望可以通過社區(qū)來加速程序開發(fā)與查找錯(cuò)誤。這個(gè)釋出的版本命名為PHP 2,已經(jīng)有今日PHP的一些雛型,像是類似Perl的變量命名方式、窗體處理功能、以及嵌入到HTML中運(yùn)行的能力。程序語法上也類似Perl,有較多的限制,不過更簡單、更有彈性。
在1997年,任職于Technion IIT公司的兩個(gè)以色列程序員:Zeev Suraski和Andi Gutmans,重寫了PHP的剖析器,成為PHP 3的基礎(chǔ),而PHP也在這個(gè)時(shí)候改稱為PHP: Hypertext Preprocessor.。經(jīng)過幾個(gè)月測試,開發(fā)團(tuán)隊(duì)在1997年11月釋出了PHP/FI 2,隨后就開始PHP 3的開放測試,最后在1998年6月正式釋出PHP 3。Zeev Suraski和Andi Gutmans在PHP 3釋出后開始改寫PHP的核心,這個(gè)在1999年釋出的剖析器稱為Zend Engine,他們也在以色列的Ramat Gan成立了Zend Technologies來管理PHP的開發(fā)。
在2000年5月22日,以Zend Engine 1.0為基礎(chǔ)的PHP 4正式釋出,2004年7月13日則釋出了PHP 5,PHP 5則使用了第二代的Zend Engine。PHP包含了許多新特色,像是強(qiáng)化的面向?qū)ο蠊δ、引入PDO(PHP Data Objects,一個(gè)訪問數(shù)據(jù)庫的延伸庫)、以及許多效能上的增強(qiáng)。目前PHP 4已經(jīng)不會(huì)繼續(xù)更新,以鼓勵(lì)用戶轉(zhuǎn)移到PHP 5。
2008年P(guān)HP 5成為了PHP唯一維護(hù)中的穩(wěn)定版本。將來的PHP 5.3將會(huì)加入Late static binding和一些其他的功能強(qiáng)化。
PHP 6的開發(fā)也正在進(jìn)行中,主要的改進(jìn)有移除register_globals、magic quotes和Safe mode的功能。
應(yīng)用
PHP是一個(gè)應(yīng)用范圍很廣的語言,特別是在網(wǎng)絡(luò)程序開發(fā)方面。一般來說PHP大多在服務(wù)器端運(yùn)行,通過運(yùn)行PHP的代碼來產(chǎn)生網(wǎng)頁提供瀏覽器讀取,此外也可以用來開發(fā)命令行腳本程序和用戶端的GUI應(yīng)用程序。PHP可以在許多的不同種的服務(wù)器、操作系統(tǒng)、平臺(tái)上運(yùn)行,也可以和許多數(shù)據(jù)庫系統(tǒng)結(jié)合。使用PHP不需要任何費(fèi)用,官方組織PHP Group提供了完整的程序源代碼,允許用戶修改、編譯、擴(kuò)充來使用。
安全
據(jù)National Vulnerability Database數(shù)據(jù)顯示,與PHP有關(guān)的數(shù)據(jù)庫攻擊比例為:20% 2004, 28% 2005, 43% 2006, 36% 2007, 35% 2008 and 32% 2009。其中很多的漏洞都可以通過遠(yuǎn)程操作完成,如:黑客可以通過網(wǎng)絡(luò)連接攻擊服務(wù)器,達(dá)到盜取或毀壞數(shù)據(jù),發(fā)送垃圾郵件或進(jìn)行拒絕服務(wù)攻擊。但是隨著更多的關(guān)注,PHP也變得越來越安全了
語法
PHP的語法參考了Perl、C語言,而且可以集成在HTML之中,以下是一個(gè)簡單的Hello World程序:
echo 'Hello World!';
?>
PHP剖析引擎只剖析之間的代碼,而不包含在之間的內(nèi)容則會(huì)直接提交,所以可以用以下的方式來將PHP代碼嵌入在HTML之中:
//-PHP程式碼
?>
html內(nèi)容
//-PHP程式碼
?>
在HTML中嵌入PHP時(shí),比如需要單獨(dú)輸出某個(gè)變量,除了正常采用echo語句外,可以直接采用
但是在判斷語句中的HTML代碼并不會(huì)被直接提交:
if (false) {
?>
HTML Code
}
?>
PHP可以用三種注解的形式:C與C++所使用的“”與“//”,和Perl的“#”。
類型
PHP主要有以下四種標(biāo)量類型:
整型(integer)
浮點(diǎn)型(float)
布爾型(boolean)
字符串(string)
兩種復(fù)合類型:
數(shù)組(array)
對象(object)
兩種特殊類型
NULL
資源(resource)
變量
PHP中,變量以“$”后接變量名稱來表示。變量名稱區(qū)分大小寫。
有效的變量名稱以字母或下劃線開頭,后接任意數(shù)目的字母、數(shù)字或下劃線,PHP也支持使用多字節(jié)文字作為變量名。
面向?qū)ο?/strong>
PHP從PHP 3開始有了基本的面向?qū)ο?Object oriented)的特性,但直到PHP 5將面向?qū)ο蟛糠葜匦赂膶懼,PHP的面向?qū)ο蠊δ懿疟容^完善,F(xiàn)在PHP可以說是一個(gè)有完整面向?qū)ο蠊δ艿恼Z言。
庫
主條目:PHP庫列表
自帶多樣化的函數(shù)是PHP主要的特點(diǎn)之一,這些開放代碼的函數(shù)提供了各種不同的功能,例如文件處理、FTP、字符串處理、等等。這些函數(shù)的使用方法和C語言相近(例如printf),這也是PHP廣為流行的原因之一。
除了自帶的函數(shù)之外,PHP也提供了很多延伸庫(extension),像是各種數(shù)據(jù)庫連接函數(shù)、數(shù)據(jù)壓縮函數(shù)、圖形處理等等。有些延伸庫需要從PECL(PHP Extension Community Library)取得。
源代碼編碼和加速
PHP源代碼是可以直接讀取的,即使放到服務(wù)器上運(yùn)行也是一樣。雖然讓PHP多了彈性,但相對的會(huì)造成安全危機(jī)和性能下降的問題。
通過PHP編碼器,可以保護(hù)PHP的源代碼不被讀取(對商業(yè)軟件來說特別有需求),也可以提升運(yùn)行的效能。有許多公司或團(tuán)體開發(fā)PHP的編碼器,將PHP程序編譯成字節(jié)碼(byte code),再通過服務(wù)器上安裝對應(yīng)的程序來運(yùn)行PHP腳本。
除了通過編碼器加速之外,PHP還可以通過動(dòng)態(tài)的高速緩存機(jī)制來提升速度,加速工具有商業(yè)版的,例如Zend Platform,也有開放源代碼的加速軟件如eAccelerator、APC、XCache。
樣板引擎
樣板引擎讓PHP應(yīng)用程序可以做邏輯和使用接口上的分離,讓程序開發(fā)更容易進(jìn)行,目前比較受歡迎的樣板引擎是PHP官方開發(fā)的Smarty。不過樣板引擎有效能上的爭議,因?yàn)镻HP本身就是一個(gè)樣板引擎,使用樣板引擎反而變成“重新發(fā)明了輪子”(reinventing the wheel)。樣板引擎最主要的好處就是讓不懂PHP代碼的人也可以參與使用接口的開發(fā),因?yàn)闃影逡娴恼Z言遠(yuǎn)比PHP簡單。
PHP 編譯器
面書在2010年推出HipHop編譯器,HipHop以自由軟件授權(quán)協(xié)議發(fā)放。HipHop把PHP源代碼編譯成C++,以提高速度;根據(jù)面書的內(nèi)部測試,HipHop的性能比本來的PHP版本高,而CPU負(fù)載減少50%。
未來發(fā)展
PHP 6
支持Unicode
移除ereg擴(kuò)展, 'register_globals', 'magic_quotes'和'safe_mode'; Alternative PHP Cache;Removal of mime_magic and rewrite of fileinfo() for better MIME support[31]
var成為public的別名,在類中的var聲明變成了public。
去除了register_long_array, PHP5默認(rèn)是關(guān)閉的, PHP6則干脆移除。
【PHP語言的優(yōu)點(diǎn)及缺點(diǎn)】相關(guān)文章:
PHP語言的優(yōu)缺點(diǎn)08-09
C語言的優(yōu)點(diǎn)和缺點(diǎn)09-06
C語言的優(yōu)點(diǎn)缺點(diǎn)是什么09-16
php語言簡介08-25
php語言的優(yōu)勢09-06
PHP語言的簡介09-23
什么是php語言10-24
Java語言的優(yōu)點(diǎn)07-12
php語言是什么05-21