加勒比HEZYO黑人专区-久久精品国产99国产精品亚洲-精品国产18久久久久久-久久人妻少妇嫩草AV

歡迎光臨 織晶網(wǎng)絡(luò)官網(wǎng)!

  • 服務(wù)支持
  • 020-39182790
服務(wù)支持您現(xiàn)在的位置:首頁 > 服務(wù)支持

php版本發(fā)展的歷史

作者:織晶客服部   發(fā)布于:2015/6/4 9:37:56  點擊量:  來源:織晶網(wǎng)絡(luò)

php最初就是為了快速構(gòu)建一個web頁面而迅速被大家廣為接受的。它的好處是在代碼中能內(nèi)嵌html的代碼,從而讓程序員能再一個頁面中同時寫html代碼和php代碼就能生成一個web頁面。

這篇文章用時間軸的角度來記錄一下php的歷史。


PHP版本歷史


1995年初

PHP1.0誕生

Rasmus Lerdof發(fā)明了PHP,這是簡單的一套Perl腳本,用來跟蹤訪問者的信息。這個時候的PHP只是一個小工具而已,它的名字叫做“Personal Home Page Tool”(個人主頁小工具)。


1995年6月

PHP2.0誕生

Rasmus Lerdof用C語言來重新開發(fā)這個工具,取代了最初的Perl程序。這個新的用C寫的工具最大的特色就是可以訪問數(shù)據(jù)庫,可以讓用戶簡單地開發(fā)動態(tài)Web程序了。這個用C寫的工具又稱為PHP/FI。它已經(jīng)有了今天php的一些基本功能了。

自Rasmus在1995年6月將PHP/FI發(fā)布源碼之后,到1997年,全世界大約有幾千個用戶(估計)和大約50000個域名安裝。


1998年6月

PHP3.0誕生

雖然說98年6月才正式發(fā)布php3.0,但是在正式發(fā)布之前,已經(jīng)經(jīng)過了9個月的公開測試了。

Andi Gutmans和Zeev Suraski加入了PHP開發(fā)項目組。這是兩個以色列工程師,他們在使用PHP/FI的時候發(fā)現(xiàn)了PHP的一些缺點,然后決定重寫PHP的解析器。注意,在這個時候,PHP就不再稱為Personal Home Page了。而改稱為PHP:Hypertext Preprocessor。

PHP3是最像現(xiàn)在使用的php的第一個版本,這個重寫的解釋器也是后來Zend的雛形。PHP3.0的最強大的功能就是它的可擴展性。它提供給第三方開發(fā)者數(shù)據(jù)庫,協(xié)議,和API的基礎(chǔ)結(jié)構(gòu)之外,還吸引了大量的開發(fā)人員加入并提交新的模塊。


2000年5月

PHP4.0發(fā)布

Andi Gutmans和Zeev Suranski在4.0做的最大的動作就是重寫了PHP的代碼,發(fā)明了Zend引擎來增強程序運行時的性能和PHP的模塊性。這個Zend實際上就是Andi和Zeev名字縮寫的合稱。

使用了Zend引擎,PHP獲得了更高的性能之外,也有其他一些關(guān)鍵的功能,包括支持更多的web服務(wù)器;HTTP Session的支持;輸出緩沖等。


2004年7月

PHP5.0發(fā)布

PHP5.0的核心是Zend引擎2代。它引入了新的對象模型和大量的新功能。比如引入了PDO(PHP Data Object)


現(xiàn)在(2014年2月)

最新的PHP 已經(jīng)發(fā)布到5.6了,據(jù)說PHP6.0已經(jīng)在開發(fā)過程中了。所有php的歷史代碼可以在PHP博物館找到。


php最近幾個版本的功能描述


php4.0

以Zend引擎作為解析器


php4.1

加入超全局變量功能,包括$GET,$POST,$_SESSION等


php4.2

從網(wǎng)絡(luò)接收的數(shù)據(jù)將不會設(shè)置成全局變量,增加程序的安全性。


php4.3

加入命令檔,成為CLI


php4.4

加入phpize和php-config的man頁面


php5.0

·         使用了Zend 2 引擎。

·         增加了新關(guān)鍵字,包括this,try,catch,public,private,protected等

·         strrpos() 和 strripos() 如今使用整個字符串作為 needle。

·         非法使用字符串偏移量會導(dǎo)致 E_ERROR 而不是 E_WARNING。一個非法使用的例子:str=′abc′;unset(str[0]);.

·         array_merge() 被改成只接受數(shù)組。如果傳遞入非數(shù)組變量,對每個此類參數(shù)都會發(fā)出一條 E_WARNING 信息。要小心因為你的代碼有可能瘋狂發(fā)出 E_WARNING。

·         如果 variables_order 包括“S”,$SERVER應(yīng)該帶有argc和argv被產(chǎn)生。如果用戶特別配制系統(tǒng)不創(chuàng)建$SERVER,那此變量當(dāng)然就不存在了。改變的地方是不管 variables_order 怎么設(shè)定,在 CLI 版本中 argc 和 argv 總是可用的。本來 CLI 版不是總會產(chǎn)生全局變量 argc和argv 的。

·         沒有屬性的對象不再被當(dāng)成“empty”。

·         get_class(),get_parent_class() 和 get_class_methods() 如今返回的類/方法名和定義時的名字一致(區(qū)分大小寫),對于依賴以前行為(類/方法名總是返回小寫的)的老腳本可能產(chǎn)生問題。一個可能的解決方法是在腳本中搜索所有這些函數(shù)并使用 strtolower()。 區(qū)分大小寫的改變也適用于魔術(shù)常量 CLASS,METHOD 和 FUNCTION。其值都會嚴(yán)格按照定義時的名字返回(區(qū)分大小寫)。

·         ip2long() 在傳遞入一個非法 IP 作為參數(shù)時返回 FALSE,不再是 -1。

·         如果有函數(shù)定義在包含文件中,則這些函數(shù)可以在主文件中使用而與是否在 return 指令之前還是之后無關(guān)。如果文件被包含兩次,PHP 5 會發(fā)出致命錯誤,因為函數(shù)已經(jīng)被定義,而 PHP 4 不管這個。因此推薦使用 include_once 而不要去檢查文件是否已被包含以及在包含文件中有條件返回。

·         include_once 和 require_once 在 Windows 下先將路徑規(guī)格化,因此包含 A.php 和 a.php 只會把文件包含一次。

更多參考資料php5的新特性


php 5.1

·         重寫了數(shù)據(jù)處理部分的代碼

·         PDO擴展默認(rèn)啟動

·         性能優(yōu)化

·         超過30個新函數(shù)

·         超過400個bug修復(fù)


php5.2

·         CLI SAPI不再從php.ini和php-cli.ini中獲取當(dāng)前目錄信息。這是從安全角度考慮的。

·         對0取模的時候會提示W(wǎng)arning信息。

·         對象可以通過__toString()函數(shù)被當(dāng)做字符串調(diào)用。

·         禁止設(shè)置抽象類的靜態(tài)方法

·         增加RFC(data:stream)的支持。

更多參考資料從5.1遷移到5.2


php5.3

改動:

·         realpath() 現(xiàn)在是完全與平臺無關(guān)的. 結(jié)果是非法的相對路徑比如 FILE . "/../x" 將不會工作.

·         call_user_func() 系列函數(shù)即使被調(diào)用者是一個父類也使用 $this.

·         數(shù)組函數(shù) natsort(), natcasesort(), usort(), uasort(), uksort(), array_flip(), 和 array_unique() 將不再接受對象作為參數(shù). 在將這些函數(shù)應(yīng)用于對象時, 請首先將對象轉(zhuǎn)換為數(shù)組.

·         按引用傳遞參數(shù)的函數(shù)在被按值傳遞調(diào)用時行為發(fā)生改變. 此前函數(shù)將接受按值傳遞的參數(shù), 現(xiàn)在將拋出致命錯誤. 之前任何期待傳遞引用但是在調(diào)用時傳遞了常量或者字面值 的函數(shù), 需要在調(diào)用前改為將該值賦給一個變量。

·         __toString 魔術(shù)方法不再接受參數(shù).

·         魔術(shù)方法 get, set, isset, unset, and __call 應(yīng)該總是公共的(public)且不能是靜態(tài)的(static). 方法簽名是必須的.

·         現(xiàn)在 __call 魔術(shù)方法在訪問私有的(private)和被保護的(protected)方法時被調(diào)用.

·         函數(shù)內(nèi) include 或者 require 一個文件時,文件內(nèi) 將不能使用 func_get_arg(), func_get_args() 和 func_num_args() 函數(shù)。

·         goto,namespace關(guān)鍵詞被保留。

新功能:

·         添加了命名空間的支持.

·         添加了靜態(tài)晚綁定支持.

·         增加了goto支持。

·         增加了閉包支持。

·         新增了兩個魔術(shù)方法, callStatic和 invoke.

·         添加了 Nowdoc 語法支持, 類似于 Heredoc 語法, 但是包含單引號.就是<<'EOF'這樣的語法。

·         可使用雙引號聲明 Heredoc, 補充了 Nowdoc 語法.

·         可在類外部使用 const 關(guān)鍵詞聲明 常量.

·         三元運算操作符有了簡寫形式: ?:.

·         HTTP 流包裹器將從 200 到 399 全部的狀態(tài)碼都視為成功。

·         允許動態(tài)訪問靜態(tài)方法。

·         異?梢员粌(nèi)嵌

·         新增了循環(huán)引用的垃圾回收器并且默認(rèn)是開啟的.

·         mail() 現(xiàn)在支持郵件發(fā)送日志. (注意: 僅支持通過該函數(shù)發(fā)送的郵件.)

更多參考資料從5.2遷移到5.3


php5.4

改動:

·         不再支持 安全模式 。任何依賴安全模式的應(yīng)用在安全方面都需要進行調(diào)整。

·         移除 魔術(shù)引號 。為避免出現(xiàn)安全問題,依賴此特性的應(yīng)用可能需要升級。 get_magic_quotes_gpc() 和 get_magic_quotes_runtime() 現(xiàn)在總是返回 FALSE 。 調(diào)用 set_magic_quotes_runtime() 將產(chǎn)生一個 E_CORE_ERROR 級別的錯誤。

·         register_globals 和 register_long_arrays php.ini 指令被移除。

·         調(diào)用時的引用傳遞 被移除。就是不能有f(&$a)這樣的形式。

·         break 和 continue 語句不再接受可變參數(shù)( 比如: break 1 + foo() * $bar; )。像類似 break 2; 這樣的固定參數(shù)仍可使用。受此變化影響,不再允許出現(xiàn) break 0; 和 continue 0; 。

·         在 日期與時間擴展 中,不再支持時區(qū)使用 TZ(TimeZone)環(huán)境變量設(shè)置。必須使用 date.timezone php.ini 配置選項或 date_default_timezone_set() 函數(shù)來指定時區(qū)。PHP 將不再嘗試猜測時區(qū),而是回退到“UTC”并發(fā)出一條 E_WARNING 錯誤。

·         非數(shù)字的字符串偏移量,比如 a[′foo′]此處a 是一個字符串,現(xiàn)在使用 isset() 時返回 false,使用 empty() 時返回 true,并產(chǎn)生一條 E_WARNING 錯誤。偏移量類型是布爾和 null 則產(chǎn)生一條 E_NOTICE 錯誤。 數(shù)字字符串(比如 a[′2′])仍像以前一樣運行。注意像類似′12.3′和′5foobar′這樣的偏移量將被視為非數(shù)字并產(chǎn)生一條EWARNING錯誤,但因為向后兼容的原因它們會被分別轉(zhuǎn)換成12和5。注意:下列代碼返回不同的結(jié)果。str='abc';var_dump(isset($str['x'])); // 在 PHP 5.4 或更新版本返回 false,但在 PHP 5.3 或更低版本返回 true

·         數(shù)組轉(zhuǎn)換成字符串將產(chǎn)生一條 E_NOTICE 級別的錯誤,但返回的結(jié)果仍是字符串 "Array" 。

·         NULL 、FALSE 、或 一個空字符串被添加成一個對象的屬性時將發(fā)出一條 E_WARNING 級別的錯誤,而不是 E_STRICT 。

·         現(xiàn)在參數(shù)名使用全局變量將會導(dǎo)致一個致命錯誤。禁止類似 function foo($GET, $POST) {} 這樣的代碼。

·         Salsa10 和 Salsa20 哈希算法 被移除。

·         當(dāng)使用兩個空數(shù)組作為參數(shù)時, array_combine() 現(xiàn)在返回 array() 而不是 FALSE 。

·         htmlentities() 將像 htmlspecialchars() 一樣處理亞洲字符集,這是以前 PHP 版本的處理情況,但現(xiàn)在將會發(fā)出一條 E_STRICT 錯誤。

·         強烈建議不要再使用 eregi() ,此特性在最新版本中被移除。

·         trait,callable,insteadof關(guān)鍵詞被保留。

新特性:

·         新增支持 traits 。

·         新增短數(shù)組語法,比如 a=[1,2,3,4];或a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4]; 。

·         新增支持對函數(shù)返回數(shù)組的成員訪問解析,例如 foo()[0] 。

·         現(xiàn)在 閉包 支持 $this 。

·         現(xiàn)在不管是否設(shè)置 short_open_tag php.ini 選項 ,將總是可用。

·         新增在實例化時訪問類成員,例如: (new Foo)->bar() 。

·         現(xiàn)在支持 Class::{expr}() 語法。

·         新增二進制直接量,例如:0b001001101

·         改進解析錯誤信息和不兼容參數(shù)的警告。

·         SESSION 擴展現(xiàn)在能追蹤文件的 上傳進度 。

·         內(nèi)置用于開發(fā)的 CLI 模式的 web server 。

更多參考資料5.3遷移到5.4


php5.5

改動:

·         已放棄對 Windows XP 和 2003 的支持。構(gòu)建 Windows 版本的 PHP 需要 Windows Vista 或更新的系統(tǒng)。

·         pack() 和 unpack() 函數(shù)的變化

·         移除 PHP logo GUIDs

新特性:

·         新增 Generators,包括yield關(guān)鍵字

·         新增 finally 關(guān)鍵字

·         foreach 現(xiàn)在支持 list()

·         empty() 現(xiàn)在支持傳入一個任意表達式,而不僅是一個變量。

·         非變量array和string也能支持下標(biāo)獲取了

·         類名通過::class可以獲取

·         增加了opcache擴展

 



上一篇:PHP分頁類代碼應(yīng)該如何設(shè)置

下一篇:PHP5各個版本的新功能和新特性總結(jié)