php数组为什么其他语言,PHP语言特性和各版本的差异
PHP語言簡介
PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創(chuàng)新的語法。
它可以比
CGI或者Perl更快速的執(zhí)行動態(tài)網(wǎng)頁。用PHP做出的動態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成
HTML標(biāo)記的CGI要高許多;PHP還可以執(zhí)行編譯后代碼,編譯可以達到加密和優(yōu)化代碼運行,使代碼運行更快。PHP具有非常強大的功能,所有的CGI
的功能PHP都能實現(xiàn),而且支持幾乎所有流行的數(shù)據(jù)庫以及操作系統(tǒng)。最重要的是PHP可以用C、C++進行程序的擴展!
特性
1、開放的源代碼:
所有的PHP源代碼事實上都可以得到。
2、PHP是免費的。
和其它技術(shù)相比,PHP本身免費。
3、php的快捷性
程序開發(fā)快,運行快,技術(shù)本身學(xué)習(xí)快。嵌入于HTML:因為PHP可以被嵌入于HTML語言,它相對于其他語言,編輯簡單,實用性強,更適合初學(xué)者。
4、跨平臺性強:
由于PHP是運行在服務(wù)器端的腳本,可以運行在UNIX、LINUX、WINDOWS下。
5、效率高:
PHP消耗相當(dāng)少的系統(tǒng)資源。
6、圖像處理:
用PHP動態(tài)創(chuàng)建圖像
7、面向?qū)ο?#xff1a;
在php4,php5 中,面向?qū)ο蠓矫娑加辛撕艽蟮母倪M,現(xiàn)在php完全可以用來開發(fā)大型商業(yè)程序。
8、專業(yè)專注:
PHP支持腳本語言為主,同為類C語言。
技術(shù)應(yīng)用
1,偽靜態(tài)
2,靜態(tài)頁面生成
3,數(shù)據(jù)庫緩存
4,過程緩存
5,div+cssw3c標(biāo)準(zhǔn)
6,大負(fù)荷
7,分布式
8,jquery框架集成
9,flex
10,桌面程序應(yīng)用(不擅長)
11,支持MVC模型
PHP3
PHP3跟Apache服務(wù)器緊密結(jié)合的特性;
加上它不斷的更新及加入新的功能;而且?guī)缀踔С炙兄髁髋c非主流數(shù)據(jù)庫;再以它能高速的執(zhí)行效率,使得PHP在1999年中的使用站點已經(jīng)超過了
150000。加上它的源代碼完全公開,在 Open
Source意識抬頭的今天,它更是這方面的中流砥柱。不斷地有新的函數(shù)庫加入,以及不停地更新的活力,使得PHP無論在UNIX、LINUX或是
Windows的平臺上都可以有更多新的功能。它提供豐富的函數(shù),使得在程序設(shè)計方面有著更好的支持。
PHP4
PHP4.0整個腳本程序的核心大幅更動,讓程序的執(zhí)行速度,滿足更快的要求。在最佳化之后的效率,已較傳統(tǒng)CGI或者ASP等程序有更好的表
現(xiàn)。而且還有更強的新功能、更豐富的函數(shù)庫。無論您接不接受,PHP 都將在 Web CGI 的領(lǐng)域上,掀起巔覆性的革命。對于一位專業(yè)的Web
Master 而言,它將也是必修課程之一。
PHP 4.0是更有效的,更可靠的動態(tài)Web頁開發(fā)工具,在大多數(shù)情況運行比 PHP 3.0要快,其腳本描述更強大并且更復(fù)雜,
最顯著的特征是速率比的增加。PHP4.0這些優(yōu)異的性能是PHP 腳本引擎重新設(shè)計產(chǎn)生的結(jié)果:引擎由 AndiGutmans 和 Zeev
Suraski從底層全面重寫。PHP4.0 腳本引擎 ——Zend引擎,使用了一種更有效的編譯——執(zhí)行方式, 而不是PHP 3.0 采用的執(zhí)行
——當(dāng)解析時模型。
PHP4的優(yōu)越性:
PHP4在3.0版的基礎(chǔ)上增加或增強了許多有用的特征,主要如下:
(1)別名:在PHP4中,可以利用引用為變量賦值,這給編程帶來了很大的靈活性。
(2)擴充了API模塊:PHP 4.0 為擴展的 API 模塊的提供了擴展PHP接口模塊, 它比舊的 API 版本顯著地快。 PHP 模塊已有的及最常用的接口多數(shù)被轉(zhuǎn)換到使用這個擴展的接口。
(3)自動資源釋放:PHP4增加了引用計數(shù)功能,這種新技術(shù)的引入使PHP4具有了自動內(nèi)存管理功能,減輕了開發(fā)人員的負(fù)擔(dān)。
(4)布爾類型:PHP 4.0 支持布爾類型。
(5)進程生成:在 UNIX 環(huán)境下的 PHP 4.0 提供了一個很智能和通用的生成進程, 使用了一種名為基于automake/libtool的系統(tǒng)生成技術(shù)。
(6)COM/DCOM 支持:PHP 4.0 提供 COM/DCOM 支持 ( 僅用于Windows 環(huán)境 ) 可以無縫地存取和訪問 COM 對象。
(7)與PHP 3.0 兼容性很好:PHP 4.0 是與 PHP 3.0 代碼向后兼容性接近100% 。由于 PHP 4 的改進的體系結(jié)構(gòu),兩者有一些細(xì)微的差別,但是大多數(shù)人將可能永遠(yuǎn)不可能遇上這種情況。
(8)配置:PHP4重新設(shè)計和增強了PHP.ini文件,這使得用PHP.ini來配置PHP顯得極為容易,這個文件可以在運行時被Apache(unix系統(tǒng))或由Windows 注冊(Windows 環(huán)境)。
(9)加密支持:PHP4實現(xiàn)了完整的加密, 這些加密功能是一個完整的mycrypt庫,并且 PHP 4.0 支持哈希函數(shù)。Blowfish,TripleDES,MD5,并且SHA1 也是可使用的一些加密算法。
(10)類型檢查:PHP 4.0 支持同一操作符用于評類型檢查:===( 3 等號運算符), 為在兩個值和其類型之間作檢查。例如, '3' ===3 將視為假 ( 類型是不同的 ), 而 3 ==3 ( 相等判斷 ) 將視為真。
(11)FTP 支持:PHP 4.0 支持 FTP 。通常, 你會為通過一個調(diào)制解調(diào)器連接下載一個大文件提供一個接口。然而, 如果你確實有需要,可以使用PHP 。
(12)PHP4新增函數(shù)或功能增強函數(shù):PHP 4.0 新增了許多函數(shù),同時也將許多現(xiàn)有的函數(shù)功能進行了增強,以下是一些例子。
array_count_values() eval() foreach() include() ob_end_clean()
ob_end_flush() ob_get_contents() ob_start() strip_tags() unset()
(13)here打印:PHP 4.0 的Here打印是與Perl類似的, 盡管完全不相同。Here是打印大容量文章的一個有用的方法,例如在 HTML文件中,不會漏掉任何一個字符,例如目錄標(biāo)記。
(14)HTTP Session fallback 系統(tǒng):為 HTTP Session管理的一個 fallback 系統(tǒng)在 PHP
4.0被實現(xiàn)
。缺省情況下,Session標(biāo)識符由cookies存儲。如果沒有cookies支持或一項cookies任務(wù)失敗,Session標(biāo)識符自動被創(chuàng)建并
在 URL 的查詢字符串中被攜帶。
(15)ISAPI 支持:PHP 4.0 能作為一個個性化的 ISAPI 模塊作為 IIS插件 。這比 PHP 3.0 更有效, 它作為一個外部的程序來運行。
(16)內(nèi)存:PHP 4.0 能更有效的使用內(nèi)存, 導(dǎo)致較少的內(nèi)存占用消耗,這主要歸功于引用計數(shù)技術(shù)的實現(xiàn)。
(17)其他類成員函數(shù):在 PHP 4.0 你能在成員函數(shù)本身的作用域或全局范圍內(nèi)調(diào)用其他類的成員函數(shù)。例如,你能用一個子函數(shù)覆蓋父函數(shù),并在子函數(shù)中調(diào)用父函數(shù)。
(18)多維數(shù)組:在 PHP 4.0 ,利用GET,POST,Cookies的進行的數(shù)據(jù)傳輸支持多維數(shù)組。
(19)個性化的 HTTP Session支持:HTTP Session處理, 包括 fallback 系統(tǒng)管理,在 PHP
4.0被它的新庫函數(shù)實現(xiàn) 。在版本 3.0 中處理Session要求使用 PHPLIB 和第三方的庫函數(shù), 它比把Session直接地由 PHP
支持慢了許多。
(20)個性化的 Java 支持:PHP 4.0 支持和java的交互。這種個性化的Java 支持為PHP 在 Java 對象上創(chuàng)建和使用方法提供一個簡單并且有效的工具。
(21)對象和數(shù)嵌套組:PHP 4.0 實現(xiàn)了功能更加強大的對象, 移去了 PHP 3.0存在的種種句法限制。對象能在數(shù)組以內(nèi)被嵌套并且反過來也如此, 可以根據(jù)你的需要實現(xiàn)嵌套。
(22)面向?qū)ο蟮木幊?#xff1a;PHP 4.0 為面向?qū)ο蟮木幊毯蜆?gòu)造類及對象提供擴展的功能和新特征。PHP4實現(xiàn)了對象重載,引用技術(shù)等新技術(shù)。
(23)對象重載支持:對象重載語法允許第三方的基于面向?qū)ο蟮念悗焓褂?PHP4 的面向?qū)ο蟮奶卣鞔嫒∷麄冏陨淼墓δ?。使用這個特征的一個 COM 模塊已經(jīng)被實現(xiàn)了。
(24)輸出緩沖支持:PHP 提供了一個輸出緩沖函數(shù)集合。輸出緩沖支持允許你寫包裹函數(shù)功能壓縮緩沖區(qū)。在 PHP4 的輸出緩沖支持允許
HTML 頭信息存放, 無論 HTML的正文是否輸出。頭信息( (header(), content type, and cookies )
不采用緩沖 。
(25)增加了PCRE 庫:PHP 4.0 包括一個 Perl 兼容的正則表達式(PCRE ) 庫, 和正常regex庫一起與 PHP 綁定。split 和replace PCRE 功能被支持。PCRE 和 Perl 正規(guī)表達式之間有一些細(xì)微差別。
(26)PHP.ini 文件:PHP.ini文件在 PHP4.0 被重新設(shè)計, 使用的 PHP
的配置PHP.ini是更容易并且更有效的。全部文件能被Apache 在運行時間操作 ( 在 Apache環(huán)境 下 ) 或由 Windows
注冊表 ( 在 Windows 下面 ) 。被加入PHP.ini文件的配置指令自動地在所有相關(guān)的模塊中被支持。
(27)引用計數(shù):PHP 4.0 為系統(tǒng)中的每個數(shù)值提供了引用計數(shù),
包括資源。一旦一個資源不再被任何變量引用,它自動地被釋放以節(jié)省內(nèi)存資源。利用這個特征的最明顯的例子一個內(nèi)置SQL查詢的循環(huán)語句。在PHP
3.0中 ,每次遞歸另外的 SQL 結(jié)果集合重復(fù)申請內(nèi)存,直到腳本執(zhí)行完畢,這些結(jié)果集合占用的內(nèi)存才被釋放。
(28)支持引用:通過引用可以改變一個變量的值。
(29)函數(shù)的運行時綁定:PHP 4.0 的運行時間綁定功能允許你在他們被聲明以前調(diào)用, 無論聲明是否在代碼以后或是在運行時間。
(30)類的運行時信息:PHP 4.0 支持在運行時刻存取下列類信息:一個對象的類名,一個對象的父類的類名字,以及對象函數(shù)所在的名字。
(31)服務(wù)器抽象層:為支持Web服務(wù)器提供了增強型 SAPI ( 服務(wù)器 API ) 接口,是 PHP 4.0
不可分的一部分。這個服務(wù)器抽象層,提供了通用的WEB服務(wù)器接口支持,支持多線程WEB服務(wù)器,為大多數(shù)的WEB服務(wù)器提供透明的支持,
這些服務(wù)器包括 Apache ,IIS ( ISAPI ), 以及 AOL 服務(wù)器。
(32)語法的點亮顯示:PHP 4.0 語法的點亮顯示允許開發(fā)者看見源代碼而不是腳本, 這個功能比PHP 3.0中的更有效。它跑得更快,更執(zhí)行得更好,并且產(chǎn)生更緊湊的HTML代碼。
(33)由引用改變變量的值:PHP 4.0 由引用支持可變的賦值, “關(guān)聯(lián)”的2個變量之中個的任何一個的值被改變,另外的變量的值同樣被改變,這類似與C中的指針類型。
(34)在引用字符串中的變量引用:PHP 4.0 增強了在引用字符串中的變量引用。
PHP5
PHP5在長時間的開發(fā)及多個預(yù)發(fā)布版本后,2004年7月13日,PHP5.0發(fā)布。該版本以Zend引擎Ⅱ為引擎,并且加入了新功能如PHP Data Objects(PDO)?,F(xiàn)在PHP5.0版本強化更多的功能。首先,完全實現(xiàn)面向?qū)ο?#xff0c;提供名為PHP兼容模式的功能。其次是XML功能,PHP5.0版本支持可直觀地訪問XML數(shù)據(jù)、名為SimpleXML的XML處理用界面。同時還強化了XMLWeb服務(wù)支持,而且標(biāo)準(zhǔn)支持SOAP擴展模塊。數(shù)據(jù)庫方面,PHP新版本提供旨在訪問MySQL的新界面——MySQL。除此前的界面外,還可以使用面向?qū)ο蠼缑婧皖A(yù)處理語句(Prepared
Statement)等MySQL的新功能.另外,PHP5.0上還捆綁有小容量RDBMS-SQLite.
1、新的對象模式 (New Object Mode)
PHP5 中的對象已經(jīng)進行了較系統(tǒng)、較全面的調(diào)整,現(xiàn)在的樣子可能看起來會有些類似于 Java。本小節(jié)著重講述 PHP5 中新的對象模式,并舉了一些較簡易的例子來說明。就讓本節(jié)成為你的 PHP5 之旅的一個新起點吧。:)
* 構(gòu)造函數(shù)和析構(gòu)函數(shù)
* 對象的引用
* 對象的克隆
* 對象中的私有、公共及受保護模式
* 接口 (Interfaces)
* 抽象類
* __call
* __set 和 __get
* 靜態(tài)成員
構(gòu)造函數(shù)和析構(gòu)函數(shù)
在 PHP4 中,當(dāng)函數(shù)與對象同名時,這個函數(shù)將成為該對象的構(gòu)造函數(shù),并且在 PHP4 中沒有析構(gòu)函數(shù)的概念。
在 PHP5 中,構(gòu)造函數(shù)被統(tǒng)一命名為 __construct,并且引入了析構(gòu)函數(shù)的概念,被統(tǒng)一命名為 __destruct。
對象的引用
在PHP4中,傳遞變量給一個函數(shù)或方法,實際是把這個變量做了一次復(fù)制,也就意味著你傳給函數(shù)或方法的是這個變量的一個副本,除非你使用了引
用符號“&” 來聲明是要做一個引用,而不是一個 Copy。在
PHP5中,對象總是以引用的形式存在的,對象中的賦值操作同樣也都是一個引用操作。
對象的克隆
當(dāng)一個對象始終以引用的形式來被調(diào)用時,如果我想得到該對象的一個副本,該怎么辦呢?PHP5 提供了一個新的功能,就是對象的克隆,語法為 __clone。
對象中的私有、公共及保護模式
PHP4 中,一個對象的所有方法和變量都是公共的,這意味著你可以在一個對象的外部操作其中的任意一個變量和方法。PHP5 引入了三種新的用來控制這種存取權(quán)限的模式,它們是:公共的(Public)、受保護的(Protected)及私有的(Private)。
公共模式(Public):允許在對象外部進行操作控制。
私有模式(Private):只允許本對象內(nèi)的方法對其進行操作控制。
受保護模式(Protected):允許本對象及其父對象對其進行操作控制。
接口 (Interfaces)
PHP4中的對象支持繼承,要使一個對象成為另一個對象的派生類,你需要使用類似 “class foo extends parent”
的代碼來控制。PHP4 和 PHP5 中,一個對象都僅能繼承一次,多重繼承是不被支持的。不過,在
PHP5中產(chǎn)生了一個新的名詞:接口,接口是一個沒有具體處理代碼的特殊對象,它僅僅定義了一些方法的名稱及參數(shù),此后的對象就可以方便的使用
'implement' 關(guān)鍵字把需要的接口整合起來,然后再加入具體的執(zhí)行代碼。
這對提高代碼的可讀性及通俗性有很大的幫助,通過上面的例子可以看到,對象 foo 包含了displayable 和 printable
兩個接口,這時我們就可以清楚的知道,對象 foo 一定會有一個 display() 方法和一個print()
方法,只需要去了解接口部分,你就可以輕易的操作該對象而不必去關(guān)心對象的內(nèi)部是如何運作的。
抽象類
抽象類不能被實例化。
抽象類與其它類一樣,允許定義變量及方法。
抽象類同樣可以定義一個抽象的方法,抽象類的方法不會被執(zhí)行,不過將有可能會在其派生類中執(zhí)行。
__call
PHP5 的對象新增了一個專用方法 __call(),這個方法用來監(jiān)視一個對象中的其它方法。如果你試著調(diào)用一個對象中不存在的方法,__call 方法將會被自動調(diào)用。
__set 和 __get
這是一個很棒的方法,__set 和 __get 方法可以用來捕獲一個對象中不存在的變量和方法。
類型指示
在 PHP5 中,你可以在對象的方法中指明其參數(shù)必須為另一個對象的實例。
靜態(tài)成員
靜態(tài)成員和靜態(tài)方法在面象對象編程的術(shù)語中被稱作 “類方法(class methods)” 和 “類變量(class variables)”。
“類方法” 在一個對象沒有實例化前允許被調(diào)用。同樣,“類變量” 在一個對象沒有實例化前可以被獨立操作控制(不需要用一個對象的方法來控制)。
2、異常處理 (Exceptions)
異常處理是公認(rèn)的處理程序錯誤的理想方法,在 Java 及 C 中都有這個概念,我們欣喜的看到,在 PHP5
已經(jīng)加入了這方面的應(yīng)用。你可以嘗試使用 “try” 和 “catch” 來控制程序的錯誤。當(dāng)有錯誤發(fā)生的時候,代碼會把錯誤交給 “catch”
子句來處理,在 “catch”
子句中,你需要指明要把錯誤交給某個對象處理,這樣做可以使代碼結(jié)構(gòu)看起來更清晰,因為現(xiàn)在我們可以把所有的錯誤信息交給一個對象來處理。
自定義錯誤處理
你可以很方便的用自定義的處理錯誤的代碼來控制你的程序中的意外。你僅僅需要從異常類中派生出一個自己的錯誤控制類,在你自己的錯誤控制類中,你需要有一個構(gòu)造函數(shù)和一個 getMessage 方法。
3、名稱空間 (Namespace)
名稱空間對類的分組或函數(shù)分組很有用。它可以把一些相關(guān)的類或函數(shù)給組合到一起,方便以后調(diào)用。
例:名稱空間
namespace Math
{
class Complex
{
//...code...
function __construct()
{
print("hey");
}
}
}
$m = new Math::Complex();
?>
注意你需要在何種情況下使用名稱空間,在實際運用中,你可能會需要聲明兩個或多個名稱一樣的對象來做不同的事情,那么你就可以把他們分別放到不同的名稱空間中去(但接口是要相同的)。
PHP6設(shè)想
1.支持Unicode
支持Unicode是有其必然,雖然Unicode占用較多的空間,但Unicode帶來的便利性,遠(yuǎn)超過占用空間的缺點,尤其在國際化的今
天,硬件設(shè)備越來越強大,網(wǎng)速也大幅度的提升,這么一點小小的缺點是可以忽略的。另外一點,PHP也可以在.ini文件中設(shè)定是否開啟支持
Unicode,決定權(quán)在你自己,這是一個不錯的點子,關(guān)掉Unicode的支持,PHP的性能并不會有大幅度的提升,主要的影響在于需要引用字符串的函
數(shù)。.
2.Register Globals 將被移除
這是一個重要的決定,許多新進的PHP開發(fā)者會覺得RegisterGlobals蠻方便的,但是卻忽略了RegisterGlobals會帶
來程序上安全性的隱患,大多數(shù)的主機上此項功能是關(guān)閉的,印象PHP4.3.x版開始時,此項默認(rèn)設(shè)置值即是關(guān)閉狀態(tài),PHP6正式移除
RegisterGlobals也代表著如果程序是由PHP3時代的產(chǎn)物,將完全無法使用,除了改寫一途外,別無他法。相信現(xiàn)在的PHP世界里,仍使用
PHP3時代所產(chǎn)生的程序應(yīng)該是少之又少。
3.Magic Quotes 將消失
Magic Quotes主要是自動轉(zhuǎn)義需要轉(zhuǎn)義的字符,此項功能移除也符合大多數(shù)PHP開發(fā)者的心聲。
4.Safe Mode 取消
老實說,這個模式不知道哪里不好,取消就取消吧,反正也用不到
5.'var' 別名為 'public'
在類中的var聲明變成public的別名,相信是為了兼容PHP5而作的決定,PHP6現(xiàn)在也可以稱作為OO語言了。
6.通過引用返回將出錯
現(xiàn)在透過引用返回編譯器將會報錯 例如$a =& new b()、function &c(),OO語言默認(rèn)就是引用,所以不需要再使用&了。
7.zend.ze1 compatbility mode 將被移去
Zend.ze1相容模式將被移去,PHP5是為兼容舊有PHP4,所以在.ini中可選擇是否開啟相容模式,原因在于PHP5使用的是第二代解析引擎,但是相容模式并不是百分之百能解析PHP4語法,所以舊時代的產(chǎn)物,移除。
8.Freetype 1 and GD 1 support 將不見
這兩個是很久的Libs,所以不再支持,GD1早已被現(xiàn)在的GD2取代了。
9.dl() 被移到 SAPI 中
dl()主要是讓設(shè)計師加載extension Libs,現(xiàn)在被移到 SAPI 中
10.Register Long Array 去除
從PHP5起默認(rèn)是關(guān)閉,再PHP6中正式移除。
11.一些Extension的變更
例如 XMLReader 和
XMLWriter將不再是以Extension的方式出現(xiàn),他們將被移入到PHP的核心之中,并且默認(rèn)是開啟,eregextension將被放入
PECL,代表著它將被移出PHP核心,這也為了讓路給新的正則表達式extension,此外,Fileinfoextension
也將被導(dǎo)入PHP的核心之中。
12.APC將被導(dǎo)入核心
這是一個提高PHP性能的功能,現(xiàn)在它將被放入PHP核心中,并且可以選擇是否啟用APC
13.告別ASP風(fēng)格的起始標(biāo)簽
原來是為了取悅ASP開發(fā)者轉(zhuǎn)向使用PHP,現(xiàn)今已經(jīng)不再需要這種做法了
總結(jié)
以上是生活随笔為你收集整理的php数组为什么其他语言,PHP语言特性和各版本的差异的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webchart= php 解码,Web
- 下一篇: oracle 外部表装载,Oracle