|
PHP是一種腳本語言最初產(chǎn)生動態(tài)網(wǎng)頁設(shè)計(jì)。它已發(fā)展到包括一個命令行界面可在獨(dú)立的圖形應(yīng)用程序。雖然PHP最初Rasmus Lerdorf創(chuàng)建1995,PHP的主要實(shí)施現(xiàn)在由PHP集團(tuán)生產(chǎn)和作為PHP的事實(shí)上的標(biāo)準(zhǔn),因?yàn)闆]有正式的規(guī)范。PHP是免費(fèi)軟件,PHP許可下發(fā)布的,但是它是不符合GNU通用公共授權(quán)(GPL),由于對術(shù)語PHP的使用限制。PHP是一種廣泛使用的通用腳本語言,特別適合于Web開發(fā),可嵌入到HTML。它通常在Web服務(wù)器上運(yùn)行PHP代碼,以作為其輸入和創(chuàng)建網(wǎng)頁的輸出。 它可以是百萬的網(wǎng)站和1000000的Web服務(wù)器。PHP最初代表個人主頁。它開始于1994作為一套通用網(wǎng)關(guān)接口的二進(jìn)制文件由丹麥格陵蘭Rasmus Lerdorf /程序員在C編程語言編寫。Doodler最初創(chuàng)建這些個人主頁工具更換小套Perl腳本,他一直用維護(hù)自己的個人主頁。工具是用來執(zhí)行任務(wù),如顯示他的é和é記錄多少流量他的頁面接收。他將這些二進(jìn)制文件翻譯他的形式創(chuàng)造PHP/FI,具有更多的功能。PHP/FI包括C語言編程實(shí)現(xiàn),更能與數(shù)據(jù)庫,使簡單的建筑,動態(tài)Web應(yīng)用程序。發(fā)布于1995年6月8日公開Lerdorf PHP加速bug定位和提高代碼。這個版本被命名為PHP版本2已經(jīng)有了基本的功能,PHP有今天。這包括像perl變量,形式處理,并且能夠嵌入HTML。 語法是類似于Perl更有限的,簡單的,不一致的。蘇拉斯基Zeev和Andi特曼斯,在以色列理工學(xué)院兩以色列開發(fā)商,重寫了解析器在1997形成了PHP 3的基礎(chǔ)上,改變語言的遞歸縮寫名稱PHP:超文本預(yù)處理器。開發(fā)團(tuán)隊(duì)正式發(fā)布PHP/FI 2十一月1997個月后測試。后來,PHP 3公開測試開始,而正式啟動是在六月1998。蘇拉斯基和特曼斯然后開始一個新的PHP的核心重寫,1999生產(chǎn)Zend引擎。他們還成立了Zend技術(shù)在以色列拉馬特甘。2000年5月22日,PHP 4,由Zend引擎1驅(qū)動,被釋放。2004年7月13日,PHP 5的發(fā)布,由新的Zend引擎II供電。PHP 5中包括新的功能,如改進(jìn)的支持面向?qū)ο缶幊蹋琍HP數(shù)據(jù)對象擴(kuò)展(它定義了一個輕量級的、一致的訪問數(shù)據(jù)庫的接口),和大量的性能改進(jìn)。由PHP集團(tuán)發(fā)布了最新的更新是年長的PHP版本4的代碼分支。在八月,2008這一的最高版本是4.4.9。PHP 4是不再發(fā)展,也不會發(fā)布任何安全更新。2008,PHP 5成為唯一穩(wěn)定的版本正在開發(fā)。后期靜態(tài)綁定失蹤已從PHP和將增加5.3版。PHP 6和PHP 5的開發(fā)是在。主要的變化包括register_globals,去除魔術(shù)引號,和安全模式。對于拆遷的原因是因?yàn)閞egister_globals了安全漏洞,和魔術(shù)引號有不可預(yù)知性,是最好的避免。相反,轉(zhuǎn)義字符,魔術(shù)引號可能與addslashes()功能取代,或者更恰當(dāng)?shù)靥颖軝C(jī)制具體到數(shù)據(jù)庫廠商本身一樣mysql_real_escape_string() MySQL。PHP沒有Unicode或多字節(jié)字符串的完整的原生支持;支持Unicode將包括在PHP 6。許多高知名度的開源項(xiàng)目不再支持PHP 4的新代碼為2008年2月5日,由于該gophp5倡議,由一個PHP開發(fā)者促進(jìn)從PHP 4到PHP 1397過渡聯(lián)盟提供 它運(yùn)行在32位和64位的環(huán)境中,但在Windows官方唯一的分布是32位,需要Windows 32位兼容模式被啟用,而使用IIS在64位Windows環(huán)境。有一個第三方的分布可用64位的Windows。PHP是一種通用的腳本語言,特別適合于Web開發(fā)。一般在Web服務(wù)器上運(yùn)行PHP代碼,以作為其輸入和創(chuàng)建網(wǎng)頁的輸出。它也可以用于命令行腳本和客戶端的GUI應(yīng)用程序。PHP可以部署在大多數(shù)Web服務(wù)器,多個操作系統(tǒng)和平臺,可用于許多關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它是免費(fèi)的,和PHP組為用戶構(gòu)建提供了完整的源代碼,自定義和擴(kuò)展自己的使用。PHP是作為一個過濾器,以輸入從文件或流中包含文本和/或PHP指令和輸出一個數(shù)據(jù)流;最常用 的輸出將HTML。它可以自動檢測用戶的語言。從PHP 4,PHP解析器編譯輸入由Zend引擎產(chǎn)生的字節(jié)碼處理,從而在其翻譯的前身改進(jìn)性能。 網(wǎng)絡(luò)服務(wù)器(如SQL數(shù)據(jù)庫),發(fā)送垃圾郵件或有助于DOS攻擊使用的惡意軟件,它可以安裝在脆弱的服務(wù)器。這些漏洞大多不遵循最佳實(shí)踐編程規(guī)則造成的:對語言本身或其核心庫的技術(shù)安全缺陷不頻繁。認(rèn)識到程序員不可信任,一些語言包括污點(diǎn)檢查自動檢測輸入驗(yàn)證誘使許多不足問題。這樣的一個特征是正在開發(fā)的PHP。雖然它可能包括在未來版本中主流的PHP,其包含在過去已經(jīng)拒絕了幾次。PHP應(yīng)用托管的服務(wù)器上需要小心注意應(yīng)對這些安全風(fēng)險。有先進(jìn)的保護(hù)片如了Suhosin硬化斑塊,特別設(shè)計(jì)的Web托管環(huán)境。安裝PHP作為CGI二進(jìn)制而不是作為Apache模塊是為增加安全性的首選方法。相對于固定代碼本身,PHP代碼可以混淆使它難讀而其余的功能。語法高亮的代碼嵌入在htmlphp只能解析代碼內(nèi)的分隔符。 在分隔符都是直接發(fā)送到輸出端不解析PHP。最常見的是 分隔符,分隔符,分別打開和關(guān)閉。分隔符也可。短標(biāo)簽可用于啟動的PHP代碼, 。這些標(biāo)簽是常用的,但像ASP風(fēng)格標(biāo)簽(< % %和% >或< =),他們是不方便為他們可以在PHP配置被禁用。因?yàn)檫@個原因,短標(biāo)簽和ASP的風(fēng)格標(biāo)簽的使用是氣餒。這些分隔符的目的是將PHP代碼從非PHP代碼,包括HTML。變量以美元符號和類型不需要事先指定。不像函數(shù)和類的名稱,變量名是大小寫敏感的。兩個雙引號(“”)和文本字符串可以嵌入一個變量的值為字符串的能力。PHP將換行符作為一個自由的語言方式的空白(除非內(nèi)部字符串引號),和語句都以分號結(jié)束。PHP有三種類型的注釋語法:/ * * /作為塊注釋,和/或以及#用于內(nèi)聯(lián)注釋。echo語句是一個設(shè)施,PHP提供了輸出文本(例如,Web瀏覽器)。 關(guān)鍵字和語法,PHP是類似于大多數(shù)高級語言,C風(fēng)格的語法。如果條件,for和while循環(huán),函數(shù)返回在語法如C語言一樣,C++,Java和Perl。PHP存儲整數(shù)在依賴平臺的范圍。這個范圍是典型的32位有符號整數(shù)。無符號整數(shù)轉(zhuǎn)換值在一定情況下;這種行為是不同于其他的編程語言。整數(shù)變量可以指定使用十進(jìn)制(正、負(fù)),八進(jìn)制和十六進(jìn)制符號。浮點(diǎn)數(shù)也存儲在一個平臺的具體范圍。他們可以使用浮點(diǎn)表示法指定,科學(xué)記數(shù)法或形式。PHP有一個本地的布爾型,類似于Java和C++本地布爾類型。使用布爾類型轉(zhuǎn)換規(guī)則,非零的值解釋為假為真零,如Perl和C + +。無效的數(shù)據(jù)類型表示一個變量,沒有價值。在空數(shù)據(jù)類型的唯一值為空。的“資源型”代表來自外部的資源的引用變量。這些通常是由從一個特定的擴(kuò)展功能,只能進(jìn)行功能相同的延伸;例子包括文件,圖像,和數(shù)據(jù)庫資源。數(shù)組可以包含任何類型的PHP可以處理,包括資源要素,對象,甚至其他陣列。為了保存在值列表和哈希與鍵和值,和兩 可以混合在一起。PHP也支持字符串,可以使用單引號,雙引號,或定界符。標(biāo)準(zhǔn)PHP庫(SPL)試圖解決標(biāo)準(zhǔn)問題,實(shí)現(xiàn)高效的數(shù)據(jù)訪問接口和類。PHP有成百上千的基函數(shù)和數(shù)以千計(jì)的通過擴(kuò)展。這些功能是有據(jù)可查的PHP網(wǎng)站,但不幸的是,內(nèi)置的圖書館有各種各樣的命名規(guī)則和不一致。PHP目前已經(jīng)沒有功能的線程編程。功能不是一流的功能,只能通過他們的名字——直接引用或變量包含的函數(shù)名稱的動態(tài)。用戶定義的函數(shù)可以創(chuàng)建在任何時間沒有原型。功能可以在代碼塊中定義,允許運(yùn)行時決定是否或不是一個函數(shù)應(yīng)定義。調(diào)用的函數(shù)必須使用括號,隨著零參數(shù)類的構(gòu)造函數(shù)調(diào)用PHP新算子的例外,其中括號是可選的。PHP支持準(zhǔn)匿名函數(shù)通過create_function()功能,雖然他們不是真正的匿名函數(shù)因?yàn)槟涿瘮?shù)是無名的,但功能只能通過名稱引用,或間接通過 一個變量,在PHP function_name()美元。PHP獲得一流的函數(shù)和閉包的支持。真正的匿名函數(shù)使用以下語法:功能getadder($ x){ return函數(shù)(Y元)使用(X){ return $ X + Y元;};} $加法器= getadder(8);echo $加法器(2);//打印“10”在這里,getadder()功能創(chuàng)建一個閉包的使用參數(shù)X元(關(guān)鍵詞“使用”部隊(duì)從語境變),其中,等更多細(xì)節(jié)參見RFC lambda函數(shù)和閉包?;镜拿嫦?qū)ο缶幊痰墓δ鼙惶砑釉赑HP 3和PHP 4的提高。[ 3 ]對象處理重寫PHP 5,擴(kuò)大功能,提高性能。在以前版本的PHP,物體像的原始類型的處理。這種方法的缺點(diǎn)是,整個對象被復(fù)制時,變量被分配或作為參數(shù)傳遞給方法。在新方法中,對象引用的處理,而不是由價值。PHP 5引入了私有成員變量和方法和保護(hù),隨著抽象類和最終類以及抽象方法和最終的方法。它還引入了一個標(biāo)準(zhǔn)的方式聲明的構(gòu)造函數(shù)和析構(gòu)函數(shù),類似于其他面向?qū)ο蟮恼Z言如C + +,和一個標(biāo)準(zhǔn)的異常處理模型。此外,PHP 5添加接口,允許多個接口來實(shí)現(xiàn)。有專門的接口允許對象與交互運(yùn)行時系統(tǒng)。對象實(shí)現(xiàn)ArrayAccess可以使用數(shù)組語法和對象實(shí)現(xiàn)迭代器或iteratoraggregate可以使用foreach語言構(gòu)造。在發(fā)動機(jī)里有沒有虛表的特征,所以靜態(tài)變量綁定而不是在編譯時引用的名字。如果開發(fā)人員創(chuàng)建一個副本,使用保留字復(fù)制一個對象,Zend引擎將檢查__clone()方法已定義或不。如果不是,它會調(diào)用一個默認(rèn)的__clone()將復(fù)制對象的屬性。如果一個__clone()方法定義,那么它將負(fù)責(zé)設(shè)置在創(chuàng)建對象的必要性。為方便起見,該引擎將提供一個功能,進(jìn)口的源對象的屬性,使程序員可以開始
信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
|