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