|
PHP的大版本主要分三支:PHP4/PHP5/PHP6 其中,PHP4由于太古老、對OO支持不力已基本被淘汰,請無視PHP4。 PHP6由于基本沒有生產(chǎn)線上的應(yīng)用,還基本只是一款概念產(chǎn)品,很多功能已在PHP5.3.3上實現(xiàn),所以也不詳述,請無視PHP6。 PHP5的版本主要分四支:PHP5.2之前的版本、PHP5.2.X、PHP5.3和日前發(fā)布的PHP5.4。 那我們應(yīng)該如何選擇適用自己項目的版本呢? PHP5.2之前的版本不值得考慮,因為某些功能缺陷或者BUG, PHP5.2之前的版本。PHP5.4還處于Beta試用的版本號,非穩(wěn)定版本,請無視PHP5.4。 主流PHP程序?qū)HP5.2.X的兼容性最好,而每次版本號的升級帶來的都是安全性和穩(wěn)定性的改善,所以宜挑選最新的版本。目前PHP5.2系列最新的是PHP5.2.17。 而如果產(chǎn)品是自己開發(fā)自己使用,PHP5.3在某些方面更具優(yōu)勢,在穩(wěn)定性上更勝一籌,增加了很多PHP5.2所不具有的功能,比如內(nèi) 置PHP-fpm、更完善的垃圾回收算法、命名空間的引入、sqlite3的支持等等,是部署項目值得考慮的版本,強(qiáng)烈推薦PHP5.3.3。 除了版本號的不同,同一版本號的PHP版本也有區(qū)別,并且在選擇PHP擴(kuò)展的時候需要注意。 ?install版:可執(zhí)行的MSI格式安裝包。 ?ZIP版:解壓即可用,與install版無區(qū)別。建議選擇ZIP版。?DEBUG版:請無視。 VC6與VC9 對于VC6還是VC9版本的選擇,PHP官方網(wǎng)站有詳細(xì)的描述,原文如下: Which version do I choose? If you are using PHP with Apache 1 or Apache2 from Apache.org you need to use the VC6 versions of PHP If you are using PHP with IIS you should use the VC9 versions of PHP VC6 Versions are compiled with the legacy Visual Studio 6 compiler VC9 Versions are compiled with the Visual Studio 2008 compiler and have improvements in performance and stability. The VC9 versions require you to have the Microsoft 2008 C++ Runtime (x86) or the Microsoft 2008 C++ Runtime (x64) installed Do NOT use VC9 version with Apache.org binaries 我該選擇哪個版本? 如果你在Apache1或者Apache2下使用PHP,你應(yīng)該選擇VC6的版本 如果你在IIS下使用PHP應(yīng)該選擇VC9的版本 VC6的版本使用visual studio6編譯 VC9使用Visual Studio 2008編譯,并且改進(jìn)了性能和穩(wěn)定性。VC9版本的PHP需要你安裝Microsoft 2008 C++ Runtime 不要在Apache下使用VC9的版本TS和NTS TS指Thread Safety,即線程安全,一般在IIS以ISAPI方式加載的時候選擇這個版本。 NTS即None-Thread Safe,一般以fast CGI方式運(yùn)行的時候選擇這個版本,具有更好的性能。 從2000年10月20日發(fā)布的第一個Windows版的PHP3.0.17開始的都是線程安全的版本,這是由于與Linux/Unix系統(tǒng)是采用多進(jìn)程的工作方式不同的是Windows系統(tǒng)是采用多線程的工作方式。如果在IIS下以CGI方式運(yùn)行PHP會非常慢,這是由于CGI模式是建立在多進(jìn)程的基礎(chǔ)之上的,而非多線程。一般我們會把PHP配置成以ISAPI的方式來運(yùn)行,ISAPI是多線程的方式,這樣就快多了。但存在一個問題,很多常用的PHP擴(kuò)展是以Linux/Unix的多進(jìn)程思想來開發(fā)的,這些擴(kuò)展在ISAPI的方式運(yùn)行時就會出錯搞垮IIS。因 此在IIS下CGI模式才是PHP運(yùn)行的最安全方式,但CGI模式對于每個HTTP請求都需要重新加載和卸載整個PHP環(huán)境,其消耗是巨大的。 為了兼顧IIS下PHP的效率和安全,微軟給出了FastCGI的解決方案。FastCGI可以讓PHP的進(jìn)程重復(fù)利用而不是每一個新的請求就重開一個進(jìn)程。同時FastCGI也可以允許幾個進(jìn)程同時執(zhí)行。這樣既解決了CGI進(jìn)程模式消耗太大的問題,又利用上了CGI進(jìn)程模式不存在線程安全問題的優(yōu)勢。 因此,如果是使用ISAPI的方式來運(yùn)行PHP就必須用Thread Safe(線程安全)的版本;而用FastCGI模式運(yùn)行PHP的話就沒有必要用線程安全檢查了,用None Thread Safe(NTS,非線程安全)的版本能夠更好的提高效率。 如何查看當(dāng)前運(yùn)行的PHP的版本?一個很簡單的辦法就是phpinfo(); Thread Safety disabled是NTS,enabled是TS Configure Command看到VC98字樣的是VC6,Compiler標(biāo)明MSVC9 (Visual C++ 2008) 的是VC9 在WIN7下:IIS7+NTS+FastCGI+vc9 是最佳搭檔或者Apache+fastcgi+nts+vc6。 在WINXP下:Apache+TS+Apache module +vc6最合適的搭檔。 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í)行編譯后代碼,編譯可以達(dá)到加密和優(yōu)化代碼運(yùn)行,使代碼運(yùn)行更快。PHP具有非常強(qiáng)大的功能,所有的CGI的功能PHP 都能實現(xiàn),而且支持幾乎所有流行的數(shù)據(jù)庫以及操作系統(tǒng)。最重要的是PHP可以用C、C++進(jìn)行程序的擴(kuò)展! 特性 1、開放的源代碼: 所有的PHP源代碼事實上都可以得到。 2、PHP是免費(fèi)的。 和其它技術(shù)相比,PHP本身免費(fèi)。 3、php的快捷性 程序開發(fā)快,運(yùn)行快,技術(shù)本身學(xué)習(xí)快。嵌入于HTML:因為PHP可以被嵌入于HTML語言,它相對于其他語言,編輯簡單,實用性強(qiáng),更適合初學(xué)者。 4、跨平臺性強(qiáng): 由于PHP是運(yùn)行在服務(wù)器端的腳本,可以運(yùn)行在UNIX、LINUX、WINDOWS下。 5、效率高: PHP消耗相當(dāng)少的系統(tǒng)資源。 6、圖像處理: 用PHP動態(tài)創(chuàng)建圖像 7、面向?qū)ο? 在PHP4,php5 中,面向?qū)ο蠓矫娑加辛撕艽蟮母倪M(jìn),現(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)。而且還有更強(qiáng)的新功能、更豐富的函數(shù)庫。無論您接不接受,PHP 都將在Web CGI 的領(lǐng)域上,掀起巔覆性的革命。對于一位專業(yè)的Web Master 而言,它將也是必修課程之一。 PHP 4.0是更有效的,更可靠的動態(tài)Web頁開發(fā)工具,在大多數(shù)情況運(yùn)行比PHP 3.0要快,其腳本描述更強(qiáng)大并且更復(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ǔ)上增加或增強(qiáng)了許多有用的特征,主要如下: (1)別名:在PHP4中,可以利用引用為變量賦值,這給編程帶來了很大的靈活性。 (2)擴(kuò)充了API模塊:PHP 4.0 為擴(kuò)展的API 模塊的提供了擴(kuò)展PHP接口模塊, 它比舊的API 版本顯著地快。PHP 模塊已有的及最常用的接口多數(shù)被轉(zhuǎn)換到使用這個擴(kuò)展的接口。 (3)自動資源釋放:PHP4增加了引用計數(shù)功能,這種新技術(shù)的引入使PHP4具有了自動內(nèi)存管理功能,減輕了開發(fā)人員的負(fù)擔(dān)。 (4)布爾類型:PHP 4.0 支持布爾類型。 (5)進(jìn)程生成:在UNIX 環(huán)境下的PHP 4.0 提供了一個很智能和通用的生成進(jìn)程, 使用了一種名為基于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 的改進(jìn)的體系結(jié)構(gòu),兩者有一些細(xì)微的差別,但是大多數(shù)人將可能永遠(yuǎn)不可能遇上這種情況。 (8)配置:PHP4重新設(shè)計和增強(qiáng)了PHP.ini文件,這使得用PHP.ini來配置PHP顯得極為容易,這個文件可以在運(yùn)行時被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 等號運(yùn)算符), 為在兩個值和其類型之間作檢查。例如, '3' ===3 將視為假( 類型是不同的), 而3 ==3 ( 相等判斷) 將視為真。 (11)FTP 支持:PHP 4.0 支持FTP 。通常, 你會為通過一個調(diào)制解調(diào)器連接下載一個大文件提供一個接口。然而, 如果你確實有需要,可以使用PHP 。 (12)PHP4新增函數(shù)或功能增強(qiáng)函數(shù):PHP 4.0 新增了許多函數(shù),同時也將許多現(xiàn)有的函數(shù)功能進(jìn)行了增強(qiáng),以下是一些例子。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 更有效, 它作為一個外部的程序來運(yùn)行。 (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的進(jìn)行的數(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)了功能更加強(qiáng)大的對象, 移去了PHP 3.0存在的種種句法限制。對象能在數(shù)組以內(nèi)被嵌套并且反過來也如此, 可以根據(jù)你的需要實現(xiàn)嵌套。 (22)面向?qū)ο蟮木幊?PHP 4.0 為面向?qū)ο蟮木幊毯蜆?gòu)造類及對象提供擴(kuò)展的功能和新特征。PHP4實現(xiàn)了對象重載,引用技術(shù)等新技術(shù)。 (23)對象重載支持:對象重載語法允許第三方的基于面向?qū)ο蟮念悗焓褂肞HP4 的面向?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 兼容的正則表達(dá)式(PCRE ) 庫, 和正常regex庫一起與PHP 綁定。split 和replace PCRE 功能被支持。PCRE 和Perl 正規(guī)表達(dá)式之間有一些細(xì)微差別。 (26)PHP.ini 文件:PHP.ini文件在PHP4.0 被重新設(shè)計, 使用的PHP 的配置PHP.ini是更容易并且更有效的。全部文件能被Apache 在運(yùn)行時間操作( 在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ù)的運(yùn)行時綁定:PHP 4.0 的運(yùn)行時間綁定功能允許你在他們被聲明以前調(diào)用, 無論聲明是否在代碼以后或是在運(yùn)行時間。 (30)類的運(yùn)行時信息:PHP 4.0 支持在運(yùn)行時刻存取下列類信息:一個對象的類名,一個對象的父類的類名字,以及對象函數(shù)所在的名字。 (31)服務(wù)器抽象層:為支持Web服務(wù)器提供了增強(qiáng)型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 增強(qiáng)了在引用字符串中的變量引用。 PHP5 PHP5在長時間的開發(fā)及多個預(yù)發(fā)布版本后,2004年7月13日, PHP5.0發(fā)布。該版本以Zend引擎Ⅱ為引擎,并且加入了新功能如PHP Data Objects(PDO)?,F(xiàn)在PHP5.0版本強(qiáng)化更多的功能。首先,完全實現(xiàn)面向?qū)ο?提供名為PHP兼容模式的功能。其次是XML功能,PHP5.0版本支持可直觀地訪問XML數(shù)據(jù)、名為SimpleXML的XML處理用界面。同時還強(qiáng)化了XMLWeb服務(wù)支持,而且標(biāo)準(zhǔn)支持SOAP擴(kuò)展模塊。數(shù)據(jù)庫方面,PHP新版本提供旨在訪問MySQL的新界面——MySQL。除此前的界面外,還可以使用面向?qū)ο蠼缑婧皖A(yù)處理語句(Prepared Statement)等MySQL的新功能.另外,PHP5.0上還捆綁有小容量RDBMS-SQLite. 1、新的對象模式(New Object Mode) PHP5 中的對象已經(jīng)進(jìn)行了較系統(tǒng)、較全面的調(diào)整,現(xiàn)在的樣子可能看起來會有些類似于Java。本小節(jié)著重講述PHP5 中新的對 象模式,并舉了一些較簡易的例子來說明。就讓本節(jié)成為你的PHP5 之旅的一個新起點吧。:) * 構(gòu)造函數(shù)和析構(gòu)函數(shù) * 對象的引用 * 對象的克隆 * 對象中的私有、公共及受保護(hù)模式 * 接口(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。 對象中的私有、公共及保護(hù)模式 PHP4 中,一個對象的所有方法和變量都是公共的,這意味著你可以在一個對象的外部操作其中的任意一個變量和方法。PHP5 引入了三種新的用來控制這種存取權(quán)限的模式,它們是:公共的(Public)、受保護(hù)的(Protected)及私有的(Private)。 公共模式(Public):允許在對象外部進(jìn)行操作控制。 私有模式(Private):只允許本對象內(nèi)的方法對其進(jìn)行操作控制。 受保護(hù)模式(Protected):允許本對象及其父對象對其進(jìn)行操作控制。 接口(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)部是如何運(yùn)作的。 抽象類 抽象類不能被實例化。 抽象類與其它類一樣,允許定義變量及方法。 抽象類同樣可以定義一個抽象的方法,抽象類的方法不會被執(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)用。 例:名稱空間 <?PHP namespace Math { class Complex { //...code... function __construct() { print("hey"); } } } $m = new Math::Complex(); ?> 注意你需要在何種情況下使用名稱空間,在實際運(yùn)用中,你可能會需要聲明兩個或多個名稱一樣的對象來做不同的事情,那么你就可以把他們分別放到不同的名稱空間中去(但接口是要相同的)。 PHP6設(shè)想 1.支持Unicode 支持Unicode是有其必然,雖然Unicode占用較多的空間,但Unicode帶來的便利性,遠(yuǎn)超過占用空間的缺點,尤其在國際化的今天,硬件設(shè)備越來越強(qiáng)大,網(wǎng)速也大幅度的提升,這么一點小小的缺點是可以忽略的。另外一點,PHP也可以在.ini文件中設(shè)定是否開啟支持Unicode,決定權(quán)在你自己,這是一個不錯的點子,關(guān)掉Unicode 的支持,PHP的性能并不會有大幅度的提升,主要的影響在于需要引用字符串的函數(shù)。. 2.Register Globals 將被移除 這是一個重要的決定,許多新進(jìn)的PHP開發(fā)者會覺得Register Globals蠻方便的,但是卻忽略了Register Globals會帶來程序上安全性的隱患,大多數(shù)的主機(jī)上此項功能是關(guān)閉的,印象PHP4.3.x版開始時,此項默認(rèn)設(shè)置值即是關(guān)閉狀態(tài),PHP6正式移除Register Globals也代表著如果程序是由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核心,這也為了讓路給新的正則表達(dá)式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)不再需要這種做法了 擴(kuò)展閱讀: 1 PHPChina: 2 PHP官方網(wǎng)站 3 php技術(shù)資源 4 PHP教程: 5 WEB安全性-2010_OWASP_TOP10:
信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
|