欧美一级aα片_av女人乱码中文字幕_18女人水多性高朝床叫视频_亚洲欧洲日韩AV,男人的天堂色,爽到喷水黄网站,超碰97日韩在线,A∨精品视频在线观看,日韩精品区欧美在线一区,韩国免费黄色视频两个妈妈,欧美一级夜夜爽 视频

手機(jī)版
當(dāng)前位置: 百鳴 > 電腦網(wǎng)絡(luò) > 程序編程

PHP官方網(wǎng)站

網(wǎng)站地址:
網(wǎng)站名稱:
PHP官方網(wǎng)站
網(wǎng)站熱點(diǎn):
security,introduction,types,variables,exceptions
登陸狀態(tài):
正常
網(wǎng)站品質(zhì):
7
世界排名:
-
更新日期:
2022/4/23 18:45:29
網(wǎng)站介紹:
PHP: Hypertext Preprocessor
網(wǎng)站百科

發(fā)展歷程/PHP[超文本預(yù)處理器]

PHP原始為Personal Home Page的縮寫(xiě),,已經(jīng)正式更名為"PHP: Hypertext Preprocessor",。注意不是“Hypertext Preprocessor”的縮寫(xiě),這種將名稱放到定義中的寫(xiě)法被稱作遞歸縮寫(xiě),。PHP于1994年由Rasmus Lerdorf創(chuàng)建,,剛剛開(kāi)始是Rasmus Lerdorf為了要維護(hù)個(gè)人網(wǎng)頁(yè)而制作的一個(gè)簡(jiǎn)單的用Perl語(yǔ)言編寫(xiě)的程序。這些工具程序用來(lái)顯示Rasmus Lerdorf的個(gè)人履歷,以及統(tǒng)計(jì)網(wǎng)頁(yè)流量,。后來(lái)又用C語(yǔ)言重新編寫(xiě),包括可以訪問(wèn)數(shù)據(jù)庫(kù),。他將這些程序和一些表單直譯器整合起來(lái),,稱為PHP/FI。PHP/FI可以和數(shù)據(jù)庫(kù)連接,,產(chǎn)生簡(jiǎn)單的動(dòng)態(tài)網(wǎng)頁(yè)程序,。

在1995年以Personal Home Page Tools (PHP Tools)開(kāi)始對(duì)外發(fā)表*版本,Lerdorf寫(xiě)了一些介紹此程序的文檔,。并且發(fā)布了PHP1.0,!在這的版本中,提供了訪客留言本,、訪客計(jì)數(shù)器等簡(jiǎn)單的功能,。以后越來(lái)越多的網(wǎng)站使用了PHP,并且強(qiáng)烈要求增加一些特性,。比如循環(huán)語(yǔ)句和數(shù)組變量等等,;在新的成員加入開(kāi)發(fā)行列之后,Rasmus Lerdorf在1995年6月8日將PHP/FI公開(kāi)發(fā)布,,希望可以透過(guò)社群來(lái)加速程序開(kāi)發(fā)與尋找錯(cuò)誤,。這個(gè)發(fā)布的版本命名為PHP 2,已經(jīng)有PHP的一些雛型,,像是類(lèi)似Perl的變量命名方式,、表單處理功能、以及嵌入到HTML中執(zhí)行的能力,。程序語(yǔ)法上也類(lèi)似Perl,,有較多的限制,不過(guò)更簡(jiǎn)單,、更有彈性,。PHP/FI加入了對(duì)MySQL的支持,從此建立了PHP在動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)上的地位。到了1996年底,,有15000個(gè)網(wǎng)站使用 PHP/FI,。

在1997年,任職于Technion IIT公司的兩個(gè)以色列程序設(shè)計(jì)師:Zeev Suraski和Andi Gutmans,,重寫(xiě)了 PHP 的剖析器,,成為PHP 3的基礎(chǔ)。而PHP也在這個(gè)時(shí)候改稱為PHP:Hypertext Preprocessor,。經(jīng)過(guò)幾個(gè)月測(cè)試,,開(kāi)發(fā)團(tuán)隊(duì)在1997年11月發(fā)布了PHP/FI 2。隨后就開(kāi)始 PHP 3的開(kāi)放測(cè)試,,較后在1998年6月正式發(fā)布PHP 3,。Zeev Suraski和Andi Gutmans在PHP 3發(fā)布后開(kāi)始改寫(xiě)PHP的核心,這個(gè)在1999年發(fā)布的剖析器稱為 Zend Engine,,他們也在以色列的Ramat Gan成立了Zend Technologies來(lái)管理PHP的開(kāi)發(fā),。

在2000年5月22日,以Zend Engine 1.0為基礎(chǔ)的PHP 4正式發(fā)布,,2004年7月13日則發(fā)布了PHP 5,,PHP 5則使用了第二代的Zend Engine。PHP包含了許多新特色,,像是強(qiáng)化的面向?qū)ο蠊δ�,、引入PDO(PHP Data Objects,一個(gè)存取數(shù)據(jù)庫(kù)的延伸函數(shù)庫(kù)),、以及許多效能上的增強(qiáng),。PHP 4已經(jīng)不會(huì)繼續(xù)更新,以鼓勵(lì)用戶轉(zhuǎn)移到PHP5,。

2008年P(guān)HP 5成為了PHP*有在開(kāi)發(fā)的PHP版本,。將來(lái)的PHP 5.3將會(huì)加入Late static binding和一些其他的功能強(qiáng)化。PHP 6的開(kāi)發(fā)也正在進(jìn)行中,,主要的改進(jìn)有移除register_globals,、magic quotes 和Safe mode的功能。

2013年6月20日,,PHP開(kāi)發(fā)團(tuán)隊(duì)自豪地宣布推出PHP5.5.0,。此版本包含了大量的新功能和bug修復(fù)。需要開(kāi)發(fā)者特別注意的一點(diǎn)是不再支持Windows XP和2003系統(tǒng),。

2014年10月16日,,PHP開(kāi)發(fā)團(tuán)隊(duì)宣布PHP5.6.2可用。四安全相關(guān)的錯(cuò)誤是固定在這個(gè)版本,,包括修復(fù)cve-2014-3668,,cve-2014-3669和cve-2014-3670,。所有的PHP5.6鼓勵(lì)用戶升級(jí)到這個(gè)版本。

開(kāi)發(fā)工具/PHP[超文本預(yù)處理器]

集成開(kāi)發(fā)環(huán)境是一種集成了軟件開(kāi)發(fā)過(guò)程中所需主要工具的集成開(kāi)發(fā)環(huán)境,,其功能包括但不僅限于代碼高亮,、代碼補(bǔ)全、調(diào)試,、構(gòu)建、版本控制等,。一些常見(jiàn)的PHP IDEs如下:
Zend Studio:商業(yè)版,,Zend官方出品,基于eclipse
Eclipse with PDT:免費(fèi)
Coda:商業(yè)版,,針對(duì)Mac用戶
NetBeans:免費(fèi),,功能強(qiáng)大
PHP Storm:商業(yè)版
Aptana Studio:免費(fèi)
PhpEd:商業(yè)版
Komodo IDE/Edit:IDE為商業(yè)版,Edit可免費(fèi)使用
Adobe Dreamweaver:商業(yè)版
除去集成開(kāi)發(fā)環(huán)境,,具備代碼高亮功能的常見(jiàn)文本編輯器因其輕巧靈活也常被選作開(kāi)發(fā)工具,,例如:Notepad++、Editplus,、SublimeText,、Everedit(國(guó)人開(kāi)發(fā))等等。

類(lèi)型/PHP[超文本預(yù)處理器]

php支持八種原始類(lèi)型,。

四種標(biāo)量類(lèi)型

?boolean(布爾型)

?integer(整型)

?float(浮點(diǎn)型,,也作“double”)

?string(字符串)

兩種復(fù)合類(lèi)型:

array(數(shù)組)、object(對(duì)象)

較后是兩種特殊類(lèi)型

resource(資源),、NULL

為了確保代碼的易讀性,,本手冊(cè)還介紹了一些偽類(lèi)型:

?mixed

?number

?callback

可能還會(huì)讀到一些關(guān)于“雙精度(double)”類(lèi)型的參考。實(shí)際上double和float是相同的,,由于一些歷史的原因,,這兩個(gè)名稱同時(shí)存在。

變量的類(lèi)型通常不是由程序員設(shè)定的,,確切地說(shuō),,是由php根據(jù)該變量使用的上下文在運(yùn)行時(shí)決定的。

注:如果想查看某個(gè)表達(dá)式的值和類(lèi)型,,用var_dump(),。

注:如果只是想得到一個(gè)易讀懂的類(lèi)型的表達(dá)方式用于調(diào)試,用gettype(),。要查看某個(gè)類(lèi)型,,不要用gettype(),而用is_type函數(shù),。

特性/PHP[超文本預(yù)處理器]

PHP的特性包括:
1.PHP獨(dú)特的語(yǔ)法混合了C,、Java、Perl以及PHP自創(chuàng)新的語(yǔ)法。2.PHP可以比CGI或者Perl更快速的執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)——?jiǎng)討B(tài)頁(yè)面方面,,與其他的編程語(yǔ)言相比,,
PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成htmL標(biāo)記的CGI要高許多,;
PHP具有非常強(qiáng)大的功能,,所有的CGI的功能PHP都能實(shí)現(xiàn)。
3.PHP支持幾乎所有流行的數(shù)據(jù)庫(kù)以及操作系統(tǒng),。
4.最重要的是PHP可以用C,、C++進(jìn)行程序的擴(kuò)展。

優(yōu)勢(shì)/PHP[超文本預(yù)處理器]

1,、開(kāi)放的源代碼:
所有的PHP源代碼事實(shí)上都可以得到,。
2、PHP是免費(fèi)的:
和其它技術(shù)相比,,PHP本身免費(fèi)且是開(kāi)源代碼,。
3、php的快捷性:
程序開(kāi)發(fā)快,,運(yùn)行快,,技術(shù)本身學(xué)習(xí)快。嵌入于HTML:因?yàn)镻HP可以被嵌入于HTML語(yǔ)言,,它相對(duì)于其他語(yǔ)言,。編輯簡(jiǎn)單,實(shí)用性強(qiáng),,更適合初學(xué)者,。
4、跨平臺(tái)性強(qiáng):
由于PHP是運(yùn)行在服務(wù)器端的腳本,,可以運(yùn)行在UNIX,、LINUX、WINDOWS,、Mac OS下,。
5、效率高:
PHP消耗相當(dāng)少的系統(tǒng)資源,。
6,、圖像處理:
用PHP動(dòng)態(tài)創(chuàng)建圖像
7、面向?qū)ο螅?br> 在php4,,php5中,,面向?qū)ο蠓矫娑加辛撕艽蟮母倪M(jìn),php完全可以用來(lái)開(kāi)發(fā)大型商業(yè)程序,。
8,、專(zhuān)業(yè)專(zhuān)注:
PHP支持腳本語(yǔ)言為主,,同為類(lèi)C語(yǔ)言。

技術(shù)應(yīng)用/PHP[超文本預(yù)處理器]

1.偽靜態(tài)
2.靜態(tài)頁(yè)面生成
3.數(shù)據(jù)庫(kù)緩存
4.過(guò)程緩存
5.div+cssw3c標(biāo)準(zhǔn)
6.大負(fù)荷
7.分布式
8.flex
9.桌面程序應(yīng)用(不擅長(zhǎng))
10.支持MVC模型
11.Smarty模版引擎

參考手冊(cè)/PHP[超文本預(yù)處理器]

函數(shù)完整參考手冊(cè):

序號(hào) 分類(lèi) 描述
1 Array 函數(shù)
2 Calendar 函數(shù)
日歷擴(kuò)展包含了簡(jiǎn)化不同日歷格式間的轉(zhuǎn)換的函數(shù),。
3 Date/Time 函數(shù)
Date/Time 函數(shù)用于從 PHP 腳本運(yùn)行的服務(wù)器上獲取日期和時(shí)間并進(jìn)行格式化,。
4 Directory 函數(shù)
Directory 函數(shù)用于獲得關(guān)于目錄及其內(nèi)容的信息。
5 Error/Logging 函數(shù)
Error/Logging 函數(shù)用于對(duì)錯(cuò)誤進(jìn)行處理和記錄,。
6 Filesystem 函數(shù)
Filesystem 函數(shù)用于訪問(wèn)和操作文件系統(tǒng),。
7 Filter 函數(shù)
PHP 過(guò)濾器用于對(duì)來(lái)自非安全來(lái)源的數(shù)據(jù)(比如用戶輸入)進(jìn)行驗(yàn)證和過(guò)濾。
8 FTP 函數(shù)
FTP 函數(shù)通過(guò)文件傳輸協(xié)議 (FTP) 提供對(duì)文件服務(wù)器的客戶端訪問(wèn),。
9 HTTP 函數(shù)
HTTP 函數(shù)用于對(duì)由 Web 服務(wù)器發(fā)送到瀏覽器的信息進(jìn)行操作,。
10 Libxml 函數(shù)
Libxml 函數(shù)和常量與 SimpleXML、XSLT 以及 DOM 函數(shù)一起使用,。
11 Mail 函數(shù)
mail() 函數(shù)用于從腳本中直接發(fā)送電子郵件。
12 Math 函數(shù)
Math 函數(shù)能處理 integer 和 float 范圍內(nèi)的值,。
13 雜項(xiàng)函數(shù)
我們把不屬于其他類(lèi)別的函數(shù)歸納到雜項(xiàng)函數(shù)類(lèi)別,。
14 MySQLi 函數(shù)
MySQLi 函數(shù)用于訪問(wèn) MySQL 數(shù)據(jù)庫(kù)服務(wù)器。
15 SimpleXML 函數(shù) SimpleXML 擴(kuò)展提供了一種獲取 XML 元素的名稱和文本的簡(jiǎn)單方式,。
16 String 函數(shù)
17 XML Parser 函數(shù) XML Parser 函數(shù)允許您創(chuàng)建 XML 解析器,,并為 XML 事件定義句柄。
18 Zip File 函數(shù) Zip File 函數(shù)允許您讀取壓縮文件,。

版本對(duì)比 /PHP[超文本預(yù)處理器]

PHP版本VC6與VC9,、Thread Safe與None-Thread Safe等的區(qū)別
PHP的大版本主要分三支:PHP4/PHP5/PHP6
其中,PHP4由于太古老,、對(duì)QQ支持不力已基本被淘汰,,請(qǐng)無(wú)視PHP4。
PHP6由于基本沒(méi)有生產(chǎn)線上的應(yīng)用,,還基本只是一款概念產(chǎn)品,,很多功能已在PHP5.3.3上實(shí)現(xiàn),所以也不詳述,,請(qǐng)無(wú)視PHP6,。
PHP5的版本主要分四支:PHP5.2之前的版本、PHP5.2.X,、PHP5.3和日前發(fā)布的PHP5.4,。

選擇版本

PHP5.2之前的版本不值得考慮,因?yàn)槟承┕δ苋毕莼蛘連UG,。PHP5.4還處于Beta試用的版本號(hào),,非穩(wěn)定版本,請(qǐng)無(wú)視PHP5.4,。
主流PHP程序?qū)HP5.2.X的兼容性*,,而每次版本號(hào)的升級(jí)帶來(lái)的都是安全性和穩(wěn)定性的改善,,所以宜挑選*版本。目前PHP5.2系列*是PHP5.2.17,。
而如果產(chǎn)品是自己開(kāi)發(fā)自己使用,,PHP5.3在某些方面更具優(yōu)勢(shì),在穩(wěn)定性上更勝一籌,,增加了很多PHP5.2所不具有的功能,,比如內(nèi)置php-fpm、更完善的垃圾回收算法,、命名空間的引入,、sqlite3的支持等等,是部署項(xiàng)目值得考慮的版本,,強(qiáng)烈推薦PHP5.3.3,。
除了版本號(hào)的不同,同一版本號(hào)的PHP版本也有區(qū)別,,并且在選擇PHP擴(kuò)展的時(shí)候需要注意,。
install版:可執(zhí)行的MSI格式安裝包。
ZIP版:解壓即可用,。和install版無(wú)區(qū)別,。建議選擇ZIP版。
DEBUG版:最終用戶無(wú)需關(guān)心,。

VC6與VC9

如果你在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方式加載的時(shí)候選擇這個(gè)版本,。
NTS即None-Thread Safe,一般以fast cgi方式運(yùn)行的時(shí)候選擇這個(gè)版本,,具有更好的性能,。
從2000年10月20日發(fā)布的*Windows版的PHP3.0.17開(kāi)始的都是線程安全的版本,這是由于與Linux/Unix系統(tǒng)是采用多進(jìn)程的工作方式不同的是Windows系統(tǒng)是采用多線程的工作方式,。如果在IIS下以CGI方式運(yùn)行PHP會(huì)非常慢,,這是由于CGI模式是建立在多進(jìn)程的基礎(chǔ)之上的,而非多線程,。一般我們會(huì)把PHP配置成以ISAPI的方式來(lái)運(yùn)行,,ISAPI是多線程的方式,,這樣就快多了。但存在一個(gè)問(wèn)題,,很多常用的PHP擴(kuò)展是以Linux/Unix的多進(jìn)程思想來(lái)開(kāi)發(fā)的,,這些擴(kuò)展在ISAPI的方式運(yùn)行時(shí)就會(huì)出錯(cuò)搞垮IIS。因此在IIS下CGI模式才是 PHP運(yùn)行的最安全方式,,但CGI模式對(duì)于每個(gè)HTTP請(qǐng)求都需要重新加載和卸載整個(gè)PHP環(huán)境,,其消耗是巨大的。
為了兼顧IIS下PHP的效率和安全,,微軟給出了FastCGI的解決方案,。FastCGI可以讓PHP的進(jìn)程重復(fù)利用而不是每一個(gè)新的請(qǐng)求就重開(kāi)一個(gè)進(jìn)程,。同時(shí)FastCGI也可以允許幾個(gè)進(jìn)程同時(shí)執(zhí)行,。這樣既解決了CGI進(jìn)程模式消耗太大的問(wèn)題,,又利用上了CGI進(jìn)程模式不存在線程安全問(wèn)題的優(yōu)勢(shì)。
因此,,如果是使用ISAPI的方式來(lái)運(yùn)行PHP就必須用Thread Safe(線程安全)的版本,;而用FastCGI模式運(yùn)行PHP的話就沒(méi)有必要用線程安全檢查了,用None Thread Safe(NTS,,非線程安全)的版本能夠更好的提高效率。

查看版本

一個(gè)很簡(jiǎn)單的辦法就是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最合適的搭檔,。

PHP3/PHP[超文本預(yù)處理器]

PHP3跟Apache服務(wù)器的緊密結(jié)合的特性,;加上它可以不斷的更新及加入新的功能,而且?guī)缀踔С炙兄髁髋c非主流數(shù)據(jù)庫(kù),。再以它能高速的執(zhí)行效率,,使得PHP在1999年中的使用站點(diǎn)已經(jīng)超過(guò)了150000。加上它的源代碼完全公開(kāi),,在 Open Source意識(shí)抬頭的今天,,它更是這方面的中流砥柱。不斷地有新的函數(shù)庫(kù)加入,,以及不停地更新的活力,。使得PHP無(wú)論在UNIX、LINUX或是Windows的平臺(tái)上都可以有更多新的功能,。它提供豐富的函數(shù),,使得在程序設(shè)計(jì)方面有著更好的支持。

PHP4/PHP[超文本預(yù)處理器]

簡(jiǎn)介

PHP4.0整個(gè)腳本程序的核心大幅更動(dòng),,讓程序的執(zhí)行速度,,滿足更快的要求,。在*化之后的效率,已較傳統(tǒng)CGI或者ASP等程序有更好的表現(xiàn),。而且還有更強(qiáng)的新功能,、更豐富的函數(shù)庫(kù)。無(wú)論您接不接受,,PHP都將在 WebCGI的領(lǐng)域上,,掀起巔覆性的革命。對(duì)于一位專(zhuān)業(yè)的Web Master而言,,它將也是必修課程之一,。
PHP 4.0是更有效的,更可靠的動(dòng)態(tài)Web頁(yè)開(kāi)發(fā)工具,,在大多數(shù)情況運(yùn)行比PHP 3.0要快,,其腳本描述更強(qiáng)大并且更復(fù)雜,最顯著的特征是速率比的增加,。PHP4.0這些優(yōu)異的性能是PHP腳本引擎重新設(shè)計(jì)產(chǎn)生的結(jié)果:引擎由AndiGutmans和Zeev Suraski從底層全面重寫(xiě),。PHP4.0 腳本引擎——Zend引擎,使用了一種更有效的編譯——執(zhí)行方式,而不是PHP 3.0 采用的執(zhí)行 ——當(dāng)解析時(shí)模型,。

優(yōu)越性

PHP4在3.0版的基礎(chǔ)上增加或增強(qiáng)了許多有用的特征,,主要如下:
(1)別名:在PHP4中,可以利用引用為變量賦值,,這給編程帶來(lái)了很大的靈活性,。
(2)擴(kuò)充了API模塊:PHP 4.0 為擴(kuò)展的 API 模塊的提供了擴(kuò)展PHP接口模塊,它比舊的 API 版本顯著地快,。PHP 模塊已有的及最常用的接口多數(shù)被轉(zhuǎn)換到使用這個(gè)擴(kuò)展的接口,。
(3)自動(dòng)資源釋放:PHP4增加了引用計(jì)數(shù)功能,這種新技術(shù)的引入使PHP4具有了自動(dòng)內(nèi)存管理功能,,減輕了開(kāi)發(fā)人員的負(fù)擔(dān),。
(4)布爾類(lèi)型:PHP 4.0 支持布爾類(lèi)型。
(5)進(jìn)程生成:在 UNIX 環(huán)境下的 PHP 4.0 提供了一個(gè)很智能和通用的生成進(jìn)程,,使用了一種名為基于automake/libtool的系統(tǒng)生成技術(shù),。
(6)COM/DCOM 支持:PHP 4.0 提供 COM/DCOM 支持 ( 僅用于Windows 環(huán)境 ) 可以無(wú)縫地存取和訪問(wèn) COM 對(duì)象。
(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è)計(jì)和增強(qiáng)了PHP.ini文件,,這使得用PHP.ini來(lái)配置PHP顯得極為容易,這個(gè)文件可以在運(yùn)行時(shí)被Apache(unix系統(tǒng))或由Windows 注冊(cè)(Windows 環(huán)境),。
(9)加密支持:PHP4實(shí)現(xiàn)了完整的加密,,這些加密功能是一個(gè)完整的mycrypt庫(kù),,并且 PHP 4.0 支持哈希函數(shù)。Blowfish,,TripleDES,MD5,,并且SHA1 也是可使用的一些加密算法。
(10)類(lèi)型檢查:PHP 4.0 支持同一操作符用于評(píng)類(lèi)型檢查:===(3 等號(hào)運(yùn)算符,,恒等計(jì)算符),,為在兩個(gè)值和其類(lèi)型之間作檢查。例如,,'3' ===3 將視為假 ( 類(lèi)型是不同的),,而 3 ==3 ( 相等判斷,不比較類(lèi)型 ) 將視為真,。
(11)FTP 支持:PHP 4.0 支持 FTP,。通常,你會(huì)為通過(guò)一個(gè)調(diào)制解調(diào)器連接下載一個(gè)大文件提供一個(gè)接口,。然而,,如果你確實(shí)有需要,可以使用PHP,。
(12)PHP4新增函數(shù)或功能增強(qiáng)函數(shù):PHP 4.0 新增了許多函數(shù),,同時(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類(lèi)似的,,盡管完全不相同,。Here是打印大容量文章的一個(gè)有用的方法,,例如在HTML文件中,,不會(huì)漏掉任何一個(gè)字符,例如目錄標(biāo)記,。
(14)HTTP Session fallback 系統(tǒng):為 HTTP Session管理的一個(gè) fallback 系統(tǒng)在 PHP 4.0被實(shí)現(xiàn),。缺省情況下,Session標(biāo)識(shí)符由cookies存儲(chǔ),。如果沒(méi)有cookies支持或一項(xiàng)cookies任務(wù)失敗,,Session標(biāo)識(shí)符自動(dòng)被創(chuàng)建并在 URL 的查詢字符串中被攜帶。
(15)ISAPI 支持:PHP 4.0 能作為一個(gè)個(gè)性化的 ISAPI 模塊作為IIS插件,。這比 PHP 3.0 更有效,,它作為一個(gè)外部的程序來(lái)運(yùn)行。
(16)內(nèi)存:PHP 4.0 能更有效的使用內(nèi)存,,導(dǎo)致較少的內(nèi)存占用消耗,,這主要?dú)w功于引用計(jì)數(shù)技術(shù)的實(shí)現(xiàn),。⒄其他類(lèi)成員函數(shù):在 PHP 4.0 你能在成員函數(shù)本身的作用域或全局范圍內(nèi)調(diào)用其他類(lèi)的成員函數(shù)。例如,,你能用一個(gè)子函數(shù)覆蓋父函數(shù),,并在子函數(shù)中調(diào)用父函數(shù)。
(17)多維數(shù)組:在 PHP 4.0 ,,利用GET,,POST,Cookies的進(jìn)行的數(shù)據(jù)傳輸支持多維數(shù)組。
(18)個(gè)性化的 HTTPSession支持:HTTP Session處理,,包括 fallback系統(tǒng)管理,,在 PHP 4.0被它的新庫(kù)函數(shù)實(shí)現(xiàn)。在版本 3.0 中處理Session要求使用 PHPLIB 和第三方的庫(kù)函數(shù),,它比把Session直接地由 PHP 支持慢了許多,。
(19)個(gè)性化的 Java 支持:PHP 4.0 支持和java的交互。這種個(gè)性化的Java 支持為PHP 在 Java 對(duì)象上創(chuàng)建和使用方法提供一個(gè)簡(jiǎn)單并且有效的工具,。
(20)對(duì)象和數(shù)嵌套組:PHP 4.0 實(shí)現(xiàn)了功能更加強(qiáng)大的對(duì)象,,移去了 PHP 3.0存在的種種句法限制。對(duì)象能在數(shù)組以內(nèi)被嵌套并且反過(guò)來(lái)也如此,,可以根據(jù)你的需要實(shí)現(xiàn)嵌套,。
(21)面向?qū)ο蟮木幊蹋篜HP 4.0 為面向?qū)ο蟮木幊毯蜆?gòu)造類(lèi)及對(duì)象提供擴(kuò)展的功能和新特征。PHP4實(shí)現(xiàn)了對(duì)象重載,,引用技術(shù)等新技術(shù),。
(22)對(duì)象重載支持:對(duì)象重載語(yǔ)法允許第三方的基于面向?qū)ο蟮念?lèi)庫(kù)使用 PHP4 的面向?qū)ο蟮奶卣鞔嫒∷麄冏陨淼墓δ堋J褂眠@個(gè)特征的一個(gè) COM 模塊已經(jīng)被實(shí)現(xiàn)了,。
(23)輸出緩沖支持:PHP 提供了一個(gè)輸出緩沖函數(shù)集合,。輸出緩沖支持允許你寫(xiě)包裹函數(shù)功能壓縮緩沖區(qū)。在 PHP4 的輸出緩沖支持允許 HTML 頭信息存放,,無(wú)論 HTML的正文是否輸出,。頭信息( (header(),content type,and cookies ) 不采用緩沖。
(24)增加了PCRE庫(kù):PHP 4.0 包括一個(gè) Perl 兼容的正則表達(dá)式(PCRE ) 庫(kù),,和正常regex庫(kù)一起與 PHP 綁定,。split 和replace PCRE 功能被支持。PCRE 和 Perl 正規(guī)表達(dá)式之間有一些細(xì)微差別,。
(25)PHP.ini 文件:PHP.ini文件在 PHP4.0 被重新設(shè)計(jì),,使用的 PHP 的配置PHP.ini是更容易并且更有效的。全部文件能被Apache 在運(yùn)行時(shí)間操作 ( 在 Apache環(huán)境 下 ) 或由 Windows 注冊(cè)表 ( 在 Windows 下面 ),。被加入PHP.ini文件的配置指令自動(dòng)地在所有相關(guān)的模塊中被支持,。
(26)引用計(jì)數(shù):PHP 4.0 為系統(tǒng)中的每個(gè)數(shù)值提供了引用計(jì)數(shù),包括資源。一旦一個(gè)資源不再被任何變量引用,,它自動(dòng)地被釋放以節(jié)省內(nèi)存資源,。利用這個(gè)特征的最明顯的例子一個(gè)內(nèi)置SQL查詢的循環(huán)語(yǔ)句。在PHP 3.0中 ,,每次遞歸另外的 SQL 結(jié)果集合重復(fù)申請(qǐng)內(nèi)存,,直到腳本執(zhí)行完畢,這些結(jié)果集合占用的內(nèi)存才被釋放,。
(27)支持引用:通過(guò)引用可以改變一個(gè)變量的值,。
(28)函數(shù)的運(yùn)行時(shí)綁定:PHP 4.0 的運(yùn)行時(shí)間綁定功能允許你在他們被聲明以前調(diào)用,無(wú)論聲明是否在代碼以后或是在運(yùn)行時(shí)間,。
(29)類(lèi)的運(yùn)行時(shí)信息:PHP 4.0 支持在運(yùn)行時(shí)刻存取下列類(lèi)信息:一個(gè)對(duì)象的類(lèi)名,,一個(gè)對(duì)象的父類(lèi)的類(lèi)名字,以及對(duì)象函數(shù)所在的名字,。
(30)服務(wù)器抽象層:為支持Web服務(wù)器提供了增強(qiáng)型 SAPI ( 服務(wù)器 API ) 接口,,是 PHP 4.0 不可分的一部分。這個(gè)服務(wù)器抽象層,,提供了通用的WEB服務(wù)器接口支持,,支持多線程WEB服務(wù)器,為大多數(shù)的WEB服務(wù)器提供透明的支持,,這些服務(wù)器包括 Apache,IIS ( ISAPI ),,以及 AOL 服務(wù)器。
(31)語(yǔ)法的點(diǎn)亮顯示:PHP 4.0 語(yǔ)法的點(diǎn)亮顯示允許開(kāi)發(fā)者看見(jiàn)源代碼而不是腳本,,這個(gè)功能比PHP 3.0中的更有效,。它跑得更快,更執(zhí)行得更好,,并且產(chǎn)生更緊湊的HTML代碼,。
(32)由引用改變變量的值:PHP 4.0 由引用支持可變的賦值,“關(guān)聯(lián)”的2個(gè)變量之中個(gè)的任何一個(gè)的值被改變,,另外的變量的值同樣被改變,,這類(lèi)似與C中的指針類(lèi)型。
(33)在引用字符串中的變量引用:PHP 4.0 增強(qiáng)了在引用字符串中的變量引用,。

PHP5/PHP[超文本預(yù)處理器]

PHP5在長(zhǎng)時(shí)間的開(kāi)發(fā)及多個(gè)預(yù)發(fā)布版本后,,2004年7月13日,,PHP5.0發(fā)布,。該版本以Zend引擎Ⅱ?yàn)橐妫⑶壹尤肓诵鹿δ苋鏟HP Data Objects(PDO),。PHP5.0版本強(qiáng)化更多的功能,。首先,完全實(shí)現(xiàn)面向?qū)ο螅峁┟麨镻HP兼容模式的功能,。其次是XML功能,,PHP5.0版本支持可直觀地訪問(wèn)XML數(shù)據(jù)、名為SimpleXML的XML處理用界面,。同時(shí)還強(qiáng)化了XMLWeb服務(wù)支持,,而且標(biāo)準(zhǔn)支持SOAP擴(kuò)展模塊。數(shù)據(jù)庫(kù)方面,,PHP新版本提供旨在訪問(wèn)MySQL的新界面——MySQL,。除此前的界面外,還可以使用面向?qū)ο蠼缑婧皖A(yù)處理語(yǔ)句(Prepared Statement)等MySQL的新功能.另外,,PHP5.0上還捆綁有小容量RDBMS-SQLite.

新對(duì)象模式

*構(gòu)造函數(shù)和析構(gòu)函數(shù) * 對(duì)象的引用 * 對(duì)象的克隆 * 對(duì)象中的私有,、公共及受保護(hù)模式 * 接口 (Interfaces)
* 抽象類(lèi) * __call * __set 和 __get * 靜態(tài)成員
構(gòu)造函數(shù)和析構(gòu)函數(shù)
在 PHP4 中,當(dāng)函數(shù)與對(duì)象同名時(shí),,這個(gè)函數(shù)將成為該對(duì)象的構(gòu)造函數(shù),,并且在 PHP4 中沒(méi)有析構(gòu)函數(shù)的概念。
在 PHP5 中,,構(gòu)造函數(shù)被統(tǒng)一命名為 __construct,,并且引入了析構(gòu)函數(shù)的概念,被統(tǒng)一命名為 __destruct,。

對(duì)象的引用

在PHP4中,,傳遞變量給一個(gè)函數(shù)或方法,實(shí)際是把這個(gè)變量做了一次復(fù)制,,也就意味著你傳給函數(shù)或方法的是這個(gè)變量的一個(gè)副本,,除非你使用了引用符號(hào)“&;” 來(lái)聲明是要做一個(gè)引用,,而不是一個(gè) Copy,。在 PHP5中,對(duì)象總是以引用的形式存在的,,對(duì)象中的賦值操作同樣也都是一個(gè)引用操作,。

對(duì)象的克隆

當(dāng)一個(gè)對(duì)象始終以引用的形式來(lái)被調(diào)用時(shí),如果我想得到該對(duì)象的一個(gè)副本,,該怎么辦呢,?PHP5 提供了一個(gè)新的功能,就是對(duì)象的克隆,,語(yǔ)法為 __clone,。

抽象類(lèi)

抽象類(lèi)不能被實(shí)例化。
抽象類(lèi)與其它類(lèi)一樣,,允許定義變量及方法,。
抽象類(lèi)同樣可以定義一個(gè)抽象的方法,,抽象類(lèi)的方法不會(huì)被執(zhí)行,不過(guò)將有可能會(huì)在其派生類(lèi)中執(zhí)行,。
__call
PHP5 的對(duì)象新增了一個(gè)專(zhuān)用方法 __call(),,這個(gè)方法用來(lái)監(jiān)視一個(gè)對(duì)象中的其它方法。如果你試著調(diào)用一個(gè)對(duì)象中不存在的方法,,__call 方法將會(huì)被自動(dòng)調(diào)用,。
__set 和 __get
這是一個(gè)很棒的方法,__set 和 __get 方法可以用來(lái)捕獲一個(gè)對(duì)象中不存在的變量和方法,。

類(lèi)型指示

在 PHP5 中,,你可以在對(duì)象的方法中指明其參數(shù)必須為另一個(gè)對(duì)象的實(shí)例。

靜態(tài)成員

靜態(tài)成員和靜態(tài)方法在面象對(duì)象編程的術(shù)語(yǔ)中被稱作 “類(lèi)方法(class methods)” 和 “類(lèi)變量(class variables)”,。
“類(lèi)方法” 在一個(gè)對(duì)象沒(méi)有實(shí)例化前允許被調(diào)用,。同樣,“類(lèi)變量” 在一個(gè)對(duì)象沒(méi)有實(shí)例化前可以被獨(dú)立操作控制(不需要用一個(gè)對(duì)象的方法來(lái)控制),。

異常處理

異常處理是公認(rèn)的處理程序錯(cuò)誤的理想方法,,在 Java及 C 中都有這個(gè)概念,我們欣喜的看到,,在 PHP5 已經(jīng)加入了這方面的應(yīng)用,。你可以嘗試使用 “try” 和 “catch” 來(lái)控制程序的錯(cuò)誤。當(dāng)有錯(cuò)誤發(fā)生的時(shí)候,,代碼會(huì)把錯(cuò)誤交給 “catch” 子句來(lái)處理,,在 “catch” 子句中,你需要指明要把錯(cuò)誤交給某個(gè)對(duì)象處理,,這樣做可以使代碼結(jié)構(gòu)看起來(lái)更清晰,,因?yàn)槲覀兛梢园阉械腻e(cuò)誤信息交給一個(gè)對(duì)象來(lái)處理。
自定義錯(cuò)誤處理
你可以很方便的用自定義的處理錯(cuò)誤的代碼來(lái)控制你的程序中的意外,。你僅僅需要從異常類(lèi)中派生出一個(gè)自己的錯(cuò)誤控制類(lèi),,在你自己的錯(cuò)誤控制類(lèi)中,你需要有一個(gè)構(gòu)造函數(shù)和一個(gè) getMessage 方法,。
命名空間

名稱空間對(duì)類(lèi)的分組或函數(shù)分組很有用,。它可以把一些相關(guān)的類(lèi)或函數(shù)給組合到一起,方便以后調(diào)用,。

注意你需要在何種情況下使用名稱空間,,在實(shí)際運(yùn)用中,你可能會(huì)需要聲明兩個(gè)或多個(gè)名稱一樣的對(duì)象來(lái)做不同的事情,,那么你就可以把他們分別放到不同的名稱空間中去(但接口是要相同的),。

加密

從PHP5.3開(kāi)始支持ZendGuard加密方式,必須安裝Zend Guard Loader,,老的zend optimizer將不被支持,。
Linux安裝Zend Guard Loader支持的過(guò)程:
操作系統(tǒng)為CentOS5.5,PHP版本為5.3.8(CentOS5.5中的PHP默認(rèn)版本較低,,如果要升級(jí)到PHP*版,,可以使用remi的report源進(jìn)行升級(jí))。
Windows 下面的 Zend Guard Loader 不支持php5.3.8 VC9 x86 Thread Safe而,,php5.3.8 VC9 x86 Non Thread Safe 又不支持 apache,。所以安裝的話,就需要安裝在iis或者和nginx搭配,。
1,、下載*Linux操作系統(tǒng)系下的Zend Guard Loader。
2,、上傳至Linux服務(wù)器并解壓縮,,注意閱讀生成目錄下的README文件。全文如下(添加必要的注釋?zhuān)�,。�?etc/php.d/目錄下創(chuàng)建文件zend.ini,內(nèi)容如下:

1  zend_extension=/usr/lib64/php/modules/ZendGuardLoader.so

注意路徑一定要寫(xiě)上,,剛開(kāi)始沒(méi)寫(xiě)路徑,老是加載不上ZendGuardLoader.so,,也可以直接將上面的配置寫(xiě)入/etc/php.ini文件中,,效果一樣。
3,、重啟httpd服務(wù):service httpd restart,。
4.輸出<?php phpinfo(); ?>
PHP 5.5 正式版發(fā)布 不再支持 Windows XP
同時(shí) PHP 開(kāi)發(fā)者也提醒用戶,PHP 5.5 也包含一些不向后兼容的內(nèi)容,,包括:不再支持 Windows XP 和 2003 系統(tǒng),;不區(qū)分大小寫(xiě)的匹配函數(shù)、類(lèi),;常數(shù)名稱跟 Locale 無(wú)關(guān),,這對(duì)一些使用非 ASCII 代碼的常量名的開(kāi)發(fā)者需要注意的。

PHP6設(shè)想/PHP[超文本預(yù)處理器]

1,、支持Unicode,。Unicode是有其必然,雖然Unicode占用較多的空間,,但Unicode帶來(lái)的便利性,,遠(yuǎn)超過(guò)占用空間的缺點(diǎn),尤其在國(guó)際化的今天,,硬件設(shè)備越來(lái)越強(qiáng)大,,網(wǎng)速也大幅度的提升,這么一點(diǎn)小小的缺點(diǎn)是可以忽略的,。另外一點(diǎn),,PHP也可以在.ini文件中設(shè)定能不能開(kāi)啟支持Unicode,,決定權(quán)在你自己,這是一個(gè)不錯(cuò)的點(diǎn)子,,關(guān)掉Unicode的支持,,PHP的性能并不會(huì)有大幅度的提升,主要的影響在于需要引用字符串的函數(shù),。
2,、Register Globals 將被移除這是一個(gè)主要的決定,老的PHP使用者會(huì)覺(jué)得Register Globals滿方便的,,但是卻忽略了Register Globals會(huì)帶來(lái)程序上安全性的隱患,,大多數(shù)的主機(jī)上此項(xiàng)功能是關(guān)閉的,印象中從PHP4.3.x版開(kāi)始,,此項(xiàng)默認(rèn)配置值即是關(guān)閉狀態(tài),,PHP6正式移除Register Globals也代表著如果程序是PHP3時(shí)代的產(chǎn)物,將完全不能運(yùn)用,,除了改寫(xiě)用途外,,別無(wú)他法。
3,、Magic Quotes 將取消Magic Quotes主要是自動(dòng)轉(zhuǎn)義須要轉(zhuǎn)義的字符,,此項(xiàng)功能移除也符合大多數(shù)PHP開(kāi)發(fā)者的心聲。
4,、Safe Mode 取消,。老實(shí)說(shuō),這個(gè)模式不知道哪里不好,,取消就取消吧,,反正也用不到。
5,、‘var’別名為‘public’,,在類(lèi)中的var聲明變成public的別名,相信是為了兼容PHP5而作的決定,,PHP6現(xiàn)在也可以稱作為OO語(yǔ)言了,。
6、通過(guò)引用返回將出錯(cuò)未來(lái)通過(guò)引用返回編譯器將會(huì)報(bào)錯(cuò) 例如$a =& new b(),、function &c(),,OO語(yǔ)言默認(rèn)就是引用,所以不須要再運(yùn)用&了,。
7,、zend.ze1 compatbility mode 將被移去(Zend.ze1相容模式將被移去),PHP5是為兼容舊有PHP4,,所以在.ini中可選擇是否開(kāi)啟相容模式,,原由在于PHP5運(yùn)用的是第二代分析引擎,,但是相容模式并不是百分之百能分析 PHP4語(yǔ)法,所以舊時(shí)代的產(chǎn)物,,移除,。
8、Freetype 1andGD 1 support將不見(jiàn)這兩個(gè)Libs存在了很久,,php6將不再支持,,況且GD1早已被現(xiàn)在的GD2取代了,。
9,、dl() 被移到SAPI中dl()主要是讓設(shè)計(jì)師加載extension Libs,被移到SAPI中,。
10,、Register Long Array去除 從PHP5起默認(rèn)是關(guān)閉,在PHP6中正式移除,。
11,、一些Extension的變更例如XMLReader和XMLWriter將不再是以Extension的方式出現(xiàn),他們將被移入到PHP的核心之中,,并且默認(rèn)是開(kāi)啟,,eregextension將被放入PECL,代表著它將被移出PHP核心,,這也是為了讓路給新的正則表達(dá)式extension,,此外,F(xiàn)ileinfo extension也將被導(dǎo)入PHP的核心之中,。
12,、APC將被導(dǎo)入核心這是一個(gè)提高PHP性能的功能,它將被放入PHP核心中,,并且可以選擇是否啟用APC,。
13、告別ASP風(fēng)格的起始標(biāo)簽原來(lái)是為了取悅ASP開(kāi)發(fā)者轉(zhuǎn)向運(yùn)用PHP,,現(xiàn)今已經(jīng)不再須要這種做法了,。
較后,別期望PHP6的性能可以徹底超過(guò)PHP5,,有可能PHP6的執(zhí)行效率會(huì)比PHP5還要來(lái)得慢,,但是可以預(yù)期的是,PHP開(kāi)發(fā)小組將會(huì)努力的完善PHP6,,超越PHP5,。

環(huán)境配置/PHP[超文本預(yù)處理器]

Windows下

軟件需求(*版)

WindowsVista或更高版本;

Apache2+或IIS6+或Nginx

安裝過(guò)程

將PHP4.0.5解壓到C:\Web\php\目錄下,。

將MySQL3.23.38安裝到C:\Web\mysql\目錄下,。

將C:\web\php\php4ts.dll文件拷貝到C:\WINNT\system32\目錄下,。

將C:\web\php\php.exel文件拷貝到C:\WINNT\目錄下。

將C:\web\php\php.ini-dist文件拷貝到C:\WINNT\目錄下,,并將php.ini-dist更名為php.ini,。

運(yùn)行C:\Web\apache\Apache\Apache.exe-i-n

運(yùn)行C:\Web\mysql\bin\mysqld-nt.exe--install

編輯C:\WINNT\php.ini

找到“extension_dir=./”字段,將其改為extension_dir="C:\myphp\php\extensions",。

編輯C:\Web\apache\Apache\conf\httpd.conf

找到“#BindAddress*”字段,,將其改為BindAddress127.0.0.1。(如果主機(jī)有固定IP地址,,此處改為主機(jī)IP地址,。如BindAddress211.101.152.106),找到“ServerName”字段,,將其改為ServerNamelocalhost,。(如主機(jī)有固定主機(jī)名,此處改為主機(jī)的主機(jī)名,。如ServerNamebn001),。

找到“ScriptAlias/cgi-bin/"C:/Web/apache/Apache/cgi-bin/"”字段,在其下面加入ScriptAlias/php/"C:/Web/php/",。找到“#AndforPHP4.x,use:”字段,,在其后面加入:AddTypeapplication/x-httpd-php;ActionApplication/x-httpd-php"c:/Web/php/php.exe",。

找到“#LoadModuleusertrack_modulemodules/mod_usertrackso”字段,,LoadModulephp4_modulec:/web/php/sapi/php4apache.dll

UNIX下

所需軟件

php-3.0.14-win32.zip;php-3.0.14-win32.zip,;mysql-shareware-3.22.32-win.zip

所有軟件均安裝在/export/home/guoj/下,,也可在其他目錄。

安裝mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
gzip-dcmysql-3.22.30.tar.gz|tarxvf-
cdmysql-3.22.30
./configure-prefix=/export/home/guoj/mysql
make
makeinstall
scripts/mysql_install_db
cd../mysql/bin
bin/safe_mysqld&安裝phpapache
gzip-dcapache_1.3.11.tar.gz|tarxvf-
gzip-dcphp-3.0.11.tar.gz|tarxvf-
cdapache_1.3.11
./configure-prefix=/export/home/guoj/www
cd../php-3.0.11
./configure-with-apache=/export/home/guoj/apache_1.3.11
-with-mysql=/export/home/guoj/mysql-enable-track-vars
make
makeinstall
cd../apache_1.3.11
./configure--prefix=/export/home/guoj/www
--activate-module=src/modules/php3/libphp3.aP
make
makeinstall
cd../php-3.0.11
cd../php3.ini-distphp3.ini
viphp3.ini修改php3.ini
doc_root=/export/home/guoj/www/htdocs/
extension_dir=/export/home/guoj/php-3.0.11/
extension=php3_mysql.dllcpphp3.ini/usr/local/lib/php3.inivi../www/conf/httpd.conf

加上以下幾句:

1
2
3
4
<Directory"/export/home/guoj/php-3.0.11/">
OptionsFollowSymLinks
AllowOverrideNone
</Directory>../www/bin/apachectlstart

其他方面/PHP[超文本預(yù)處理器]

PHP 在數(shù)據(jù)庫(kù)方面的豐富支持,,也是它迅速走紅的原因之一,,它支持下列的數(shù)據(jù)庫(kù)或是數(shù)據(jù)文件:

Adabas 、D,、 DBA,、dBase 、dbm ,、filePro ,、Informix 、InterBase,、mSQL ,、Microsoft SQL Server、·MySQL、Solid,、Sybase,、 Oracle 、PostgreSQL

而在 Internet 上它也支持了相當(dāng)多的通訊協(xié)議 (protocol),,包括了與電子郵件相關(guān)的 IMAP,POP3,;網(wǎng)管系統(tǒng) SNMP;網(wǎng)絡(luò)新聞NNTP,;帳號(hào)共用 NIS,;全球信息網(wǎng) HTTP 及 Apache 服務(wù)器;目錄協(xié)議 LDAP 以及其它網(wǎng)絡(luò)的相關(guān)函數(shù),。

除此之外,,用 PHP 寫(xiě)出來(lái)的 Web 后端 CGI 程序,可以很輕易的移植到不同的操作系統(tǒng)上,。例如,,先以 Linux 架的網(wǎng)站,,在系統(tǒng)負(fù)荷過(guò)高時(shí),,可以快速地將整個(gè)系統(tǒng)移到 SUN 工作站上,不用重新編譯 CGI 程序,。面對(duì)快速發(fā)展的 Internet,,這是長(zhǎng)期規(guī)劃的*選擇。

相關(guān)語(yǔ)法及概念

語(yǔ)法(例子中均忽略了PHP代碼邊界符 ):

注釋的語(yǔ)法有三種:

基本的結(jié)構(gòu)控制語(yǔ)句:

一個(gè)PHP實(shí)例:

php對(duì)面向?qū)ο蟮闹С?/p>

面向?qū)ο缶幊痰母拍睿?/p>

不同的作者之間說(shuō)法可能不一樣,,但是一個(gè)OOP語(yǔ)言必須有以下幾方面:

1.抽象數(shù)據(jù)類(lèi)型和信息封裝

2.繼承

3.多態(tài)

在PHP中是通過(guò)類(lèi)來(lái)完成封裝的:

當(dāng)然你可以按自己的喜好進(jìn)行定義,,但*保持一種標(biāo)準(zhǔn),這樣會(huì)更有效,。數(shù)據(jù)成員在類(lèi)中使用"var"聲明來(lái)定義,,在給數(shù)據(jù)成員賦值之前,它們是沒(méi)有類(lèi)型的,。一個(gè)數(shù)據(jù)成員可以是一個(gè)整數(shù),,一個(gè)數(shù)組,一個(gè)相關(guān)數(shù)組(associative array)或者是一個(gè)對(duì)象,。方法在類(lèi)中被定義成函數(shù)形式,,在方法中訪問(wèn)類(lèi)成員變量時(shí),你應(yīng)該使用$this->name,,否則對(duì)一個(gè)方法來(lái)說(shuō),,它只能是局部變量。

使用new操作符來(lái)創(chuàng)建一個(gè)對(duì)象:

然后你可以使用成員函數(shù)通過(guò):

在這個(gè)例子中,,setX成員函數(shù)將5賦值給對(duì)象的成員變量x(不是類(lèi)的),,然后getX返回它的值5�,?梢韵螅�$obj->x=6那樣通過(guò)類(lèi)引用方式來(lái)存取數(shù)據(jù)成員,,這不是一個(gè)很好的OOP習(xí)慣,。我強(qiáng)烈建議通過(guò)方法來(lái)存取成員變量。如果你把成員變量看成是不可處理的,,并且只通過(guò)對(duì)象句柄來(lái)使用方法,,你將是一個(gè)好的OOP程序員。不幸的是,,PHP不支持聲明私有成員變量,,所以不良代碼在PHP中也是允許的。繼承在PHP中很容易實(shí)現(xiàn),,只要使用extends關(guān)鍵字,。

"Another"類(lèi)的對(duì)象擁有了父類(lèi)(Something)的全部的數(shù)據(jù)成員及方法,而且還加上了自己的數(shù)據(jù)成員和方法,。

你可以使用

PHP只支持單繼承,,所以你不能從兩個(gè)或兩個(gè)以上類(lèi)派生出新的類(lèi)來(lái)。你可以在派生類(lèi)中重定義一個(gè)方法,,如果我們?cè)?Another"類(lèi)中重定義了getX方法(方法重寫(xiě)),,我們就不能使 用"Something"中的getX方法了。如果你在派生類(lèi)中聲明了一個(gè)與基派同名的數(shù)據(jù)成員,,那么當(dāng)你處理它時(shí),, 它將“隱藏”基類(lèi)的數(shù)據(jù)成員。

你可以在你的類(lèi)中定義構(gòu)造函數(shù),。構(gòu)造函數(shù)是一個(gè)與類(lèi)名同名的方法,,當(dāng)你創(chuàng)建一個(gè)類(lèi)的對(duì)象時(shí)會(huì)被調(diào)用,例如:

所以你可以創(chuàng)建一個(gè)對(duì)象,,通過(guò):

構(gòu)造函數(shù)會(huì)自動(dòng)地把6賦值給數(shù)據(jù)變量x,。構(gòu)造函數(shù)和方法都是普通的PHP函數(shù)(”__“兩個(gè)下劃線,魔術(shù)方法),,所以你可以使用缺省參數(shù),。

接著:

缺省參數(shù)使用C++的方式,所以你不能忽略Y的值,,而給X一個(gè)缺省參數(shù),,參數(shù)是從左到右賦值的,如果傳入的參數(shù)少于要求的參數(shù)時(shí),,其作的將使用缺省參數(shù),。

當(dāng)一個(gè)派生類(lèi)的對(duì)象被創(chuàng)建時(shí),只有它的構(gòu)造函數(shù)被調(diào)用,,父類(lèi)的構(gòu)造函數(shù)沒(méi)被調(diào)用,,如果你想調(diào)用基類(lèi)的構(gòu)造函數(shù),你必須要在派生類(lèi)的構(gòu)造函數(shù)中用parent::__construct()調(diào)用�,?梢赃@樣做是在派生類(lèi)中所有父類(lèi)的方法都是可用的,。

OOP的一個(gè)很好的機(jī)制是使用抽象類(lèi)。抽象類(lèi)是不能實(shí)例化,,只能提供給派生類(lèi)一個(gè)接口,。設(shè)計(jì)者通常使用抽象類(lèi)來(lái)強(qiáng)迫程序員從基類(lèi)派生,這樣可以確保新的類(lèi)包含一些期待的功能,。在PHP中沒(méi)有標(biāo)準(zhǔn)的方法,,但是:如果你需要這個(gè)特性,可以通過(guò)定義基類(lèi),,并在它的構(gòu)造函數(shù)后加上"die" 的調(diào)用,,這樣就可以保證基類(lèi)是不可實(shí)例化的,在每一個(gè)方法(接口)后面加上"die" 語(yǔ)句,,所以,,如果一個(gè)程序員在派生類(lèi)中沒(méi)有復(fù)蓋方法,將引發(fā)一個(gè)錯(cuò)誤,。而且因?yàn)镻HP 是無(wú)類(lèi)型的,,你可能需要確認(rèn)一個(gè)對(duì)象是來(lái)自于你的基類(lèi)的派生類(lèi),那么在基類(lèi)中增加一個(gè)方法來(lái)實(shí)義類(lèi)的身份(返回某種標(biāo)識(shí)id),,并且在你接收到一個(gè)對(duì)象參數(shù)時(shí)校驗(yàn)這個(gè)值,。當(dāng)然,,如果一個(gè)不好的邪惡程序員在派生類(lèi)中復(fù)蓋了這個(gè)方法,,這種方法就不起作用了,不過(guò)一般問(wèn)題多在懶惰的程序員身上,,而不是邪惡的程序員,。

當(dāng)然,能夠讓基類(lèi)對(duì)程序員無(wú)法看到是很好的,,只要將接口打印出來(lái)做他們的工作就可以了,。PHP 5 引入了析構(gòu)函數(shù)的概念,這類(lèi)似于其它面向?qū)ο蟮恼Z(yǔ)言,,如 C++,。析構(gòu)函數(shù)會(huì)在到某個(gè)對(duì)象的所有引用都被刪除或者當(dāng)對(duì)象被顯式銷(xiāo)毀時(shí)執(zhí)行。

重載(與復(fù)蓋不同)在PHP中不支持,,因?yàn)镻HP是弱類(lèi)型語(yǔ)言,。在OOP中,你可以重載一個(gè)方法來(lái)實(shí)現(xiàn)兩個(gè)或重多的方法具有相同的名字,,但是有不同數(shù)量或類(lèi)型的參數(shù)(這要看語(yǔ)言),。PHP 是一種松散類(lèi)型的語(yǔ)言,所以通過(guò)類(lèi)型重載不起作用,然而通過(guò)參數(shù)的個(gè)數(shù)不同來(lái)重載也不起作用,。

有時(shí)在OOP中重載構(gòu)造函數(shù)非常好,,這樣你可以通過(guò)不同的方法創(chuàng)建對(duì)象(變量函數(shù))。在PHP中實(shí)現(xiàn)它的技巧是:

通過(guò)在類(lèi)中的額外的處理,,使用這個(gè)類(lèi)對(duì)用戶是透明的:

有時(shí)這個(gè)非常好用,。

多態(tài)

多態(tài)是對(duì)象的一種能力,它可以在運(yùn)行時(shí)刻根據(jù)傳遞的對(duì)象參數(shù),,決定調(diào)用哪一個(gè)對(duì)象的方法,。例如,如果你有一個(gè)figure的類(lèi),,它定義了一個(gè)draw的方法,。并且派生了circle和rectangle 類(lèi),在派生類(lèi)中你復(fù)蓋了draw方法,,你可能還有一個(gè)函數(shù),,它希望使用一個(gè)參數(shù)x,并且可以調(diào)用$x->draw(),。如果你有多態(tài)性,,調(diào)用哪個(gè)draw方法就依賴于你傳遞給這個(gè)函數(shù)的對(duì)象類(lèi)型。

多態(tài)性在象PHP這樣的解釋語(yǔ)言(想象一下一個(gè)C++編譯器生成這樣的代碼,,你應(yīng)該調(diào)用哪一個(gè)方法,?你也不知道你擁有的對(duì)象是什么類(lèi)型的,好,,這不是重點(diǎn))是非常容易和自然的,。所以PHP當(dāng)然支持多態(tài)性。

用PHP進(jìn)行面向?qū)ο缶幊?/h3>

一些"純化論者(purists)"可能會(huì)說(shuō)PHP不是一個(gè)真正的面向?qū)ο蟮恼Z(yǔ)言,,這是事實(shí),。PHP 是一個(gè)混合型語(yǔ)言,你可以使用OOP,,也可以使用傳統(tǒng)的過(guò)程化編程,。然而,對(duì)于大型項(xiàng)目,,你可能想/需要在PHP 中使用純的OOP去聲明類(lèi),,而且在你的項(xiàng)目只用對(duì)象和類(lèi)。

隨著項(xiàng)目越來(lái)越大,,使用OOP可能會(huì)有幫助,,OOP代碼很容易維護(hù),容易理解和重用,。這些就是軟件工程的基礎(chǔ),。在基于web的項(xiàng)目中應(yīng)用這些概念就成為將來(lái)網(wǎng)站成功的關(guān)鍵,。

高級(jí)OOP技術(shù)

在看過(guò)基本的OOP概念后,我就可以向你展示更高級(jí)的技術(shù):

序列化(Serializing)

PHP不支持永久對(duì)象,,在OOP中永久對(duì)象是可以在多個(gè)應(yīng)用的引用中保持狀態(tài)和功能的對(duì)象,,這意味著擁有將對(duì)象保存到一個(gè)文件或數(shù)據(jù)庫(kù)中的能力,而且可以在以后裝入對(duì)象,。這就是所謂的序列化機(jī)制,。PHP 擁有序列化方法,它可以通過(guò)對(duì)象進(jìn)行調(diào)用,,序列化方法可以返回對(duì)象的字符串表示,。然而,序列化只保存了對(duì)象的成員數(shù)據(jù)而不包括方法,。

在PHP4中,,如果你將對(duì)象序列化到字符串$s中,然后釋放對(duì)象,,接著反序列化對(duì)象到$obj,,你可以繼續(xù)使用對(duì)象的方法!我不建議這樣去做,,因?yàn)椋╝)文檔中沒(méi)有保證這種行為在以后的版本中仍然可以使用,。(b) 這個(gè)可能導(dǎo)致一種誤解,在你把一個(gè)序列化后的版本保存到磁盤(pán)并退出腳本時(shí),。當(dāng)以后運(yùn)行這個(gè)腳本時(shí),,你不能期待著在反序列化一個(gè)對(duì)象時(shí),對(duì)象的方法也會(huì)在那里,,因?yàn)樽址硎靖揪筒话ǚ椒ā?/p>

總而言之,,PHP 進(jìn)行序列化對(duì)于保存對(duì)象的成員變量非常有用。(你也可以將相關(guān)數(shù)組和數(shù)組序列化到一個(gè)文件中),。

例子 :

你恢復(fù)了成員數(shù)據(jù),,但是不包括方法(根據(jù)文檔所說(shuō))。這導(dǎo)致了只能通過(guò)類(lèi)似于使用$obj2->x來(lái)存取成員變量(你沒(méi)有別的方法�,。┑�*辦法,所以不要在家里試它,。

有一些辦法可以解決這個(gè)問(wèn)題,,我把它留著,因?yàn)閷?duì)這篇簡(jiǎn)潔的文章來(lái)說(shuō),,他們太不好,。我會(huì)很高興地歡迎在PHP的后續(xù)版本中有全序列化的特性。

使用類(lèi)進(jìn)行數(shù)據(jù)存儲(chǔ)PHP和OOP一件非常好的事情就是,,你可以很容易地定義一個(gè)類(lèi)來(lái)操作某件事情,,并且無(wú)論何時(shí)你想用的時(shí)候都可以調(diào)用相應(yīng)的類(lèi),。假設(shè)你有一個(gè)HTML表單,用戶可以通過(guò)選擇產(chǎn)品ID號(hào)來(lái)選擇一個(gè)產(chǎn)品,。在數(shù)據(jù)庫(kù)中有產(chǎn)品的信息,,你想把產(chǎn)品顯示出來(lái),顯示它的價(jià)格等等,。你擁有不同類(lèi)型的產(chǎn)品,,并且同一個(gè)動(dòng)作可能對(duì)不同的產(chǎn)品具有不同的意思。例如,,顯示一個(gè)聲音可能意味著播放它,,但是對(duì)于其它種類(lèi)的產(chǎn)品可能意味著顯示一個(gè)存在數(shù)據(jù)庫(kù)中的圖片。你可以使用OOP或PHP來(lái)減少編碼并提高質(zhì)量:

定義一個(gè)產(chǎn)品的類(lèi),,定義它應(yīng)該有的方法(例如:顯示),,然后定義對(duì)每一種類(lèi)型的產(chǎn)品的類(lèi),從產(chǎn)品類(lèi)派后出來(lái)(SoundItem類(lèi),,ViewableItem類(lèi),,等等),復(fù)蓋在產(chǎn)品類(lèi)中的方法,,使它們按你的想法動(dòng)作,。

根據(jù)數(shù)據(jù)庫(kù)中每一種產(chǎn)品的類(lèi)型(type)字段給類(lèi)命名,一個(gè)典型的產(chǎn)品表可能有(id,type,price,description,,等等字段)...然后在處理腳本中,,你可以從數(shù)據(jù)庫(kù)中取出type值,然后實(shí)例化一個(gè)名為type的對(duì)象:

這是PHP的一個(gè)非常好的特性,,你可以不用考慮對(duì)象的類(lèi)型,,調(diào)用$obj的顯示方法或其它的方法。使用這個(gè)技術(shù),,你不需要修改腳本去增加一個(gè)新類(lèi)型的對(duì)象,,只是增加一個(gè)處理它的類(lèi)。

這個(gè)功能很強(qiáng)大,,只要定義方法,,而不去考慮所有對(duì)象的類(lèi)型,在不同的類(lèi)中按不同的方法實(shí)現(xiàn)它們,,然后在主腳本中對(duì)任意對(duì)象使用它們,,沒(méi)有if...else,也不需要兩個(gè)程序員,,只有高興,。

你同意編程是容易的,維護(hù)是便宜的,,可重用是真的嗎,?

如果你管理一組程序員,,分配工作就是很簡(jiǎn)單的了,每個(gè)人可能負(fù)責(zé)一個(gè)類(lèi)型的對(duì)象和處理它的類(lèi),。

可以通過(guò)這個(gè)技術(shù)實(shí)現(xiàn)國(guó)際化,,根據(jù)用戶所選的語(yǔ)言字段應(yīng)用相應(yīng)的類(lèi)就可以了,等等,。

拷貝和克隆

當(dāng)你創(chuàng)建一個(gè)$obj的對(duì)象時(shí),,你可以通過(guò)$obj2=$obj來(lái)拷貝對(duì)象,新的對(duì)象是$obj的一個(gè)拷貝(不是一個(gè)引用),,所以它具有$obj在當(dāng)時(shí)的狀態(tài),。有時(shí)候,你不想這樣,,你只是想生成一個(gè)象obj類(lèi)一樣的一個(gè)新的對(duì)象,,可以通過(guò)使用new語(yǔ)句來(lái)調(diào)用類(lèi)的構(gòu)造函數(shù)。在PHP中也可以通過(guò)序列化,,和一個(gè)基類(lèi)來(lái)實(shí)現(xiàn),,但所有的其它類(lèi)都要從基類(lèi)派生出來(lái)。

進(jìn)入危險(xiǎn)區(qū)域

當(dāng)你序列化一個(gè)對(duì)象,,你會(huì)得到某種格式的字符串,,如果你感興趣,你可以調(diào)究它,,其中,,字符串中有類(lèi)的名字(太好了!),,你可以把它取出來(lái),,象:

所以假設(shè)你創(chuàng)建了一個(gè)"Universe"的類(lèi),并且強(qiáng)制所有的類(lèi)都必須從universe擴(kuò)展,,你可以在universe 中定義一個(gè)clone的方法,,如下:

你所得到的是一個(gè)新的Something類(lèi)的對(duì)象,它同使用new方法,,調(diào)用構(gòu)造函數(shù)創(chuàng)建出的對(duì)象一樣,。我不知道這個(gè)對(duì)你是否有用,但是Universe類(lèi)可以知道派生類(lèi)的名字是一個(gè)好的經(jīng)驗(yàn),。想象是*限制,。

模板引擎

Smarty:Smarty的特點(diǎn)是將模板編譯成PHP腳本,然后執(zhí)行這些腳本,。很快,非常方便,。

Heyes Template Class:一個(gè)非常容易使用,,但功能強(qiáng)大并且快速的模板引擎,,它幫助你把頁(yè)面布局和設(shè)計(jì)從代碼中分離。

FastTemplate:一個(gè)簡(jiǎn)單的變量插值模板類(lèi),,它分析你的模板,,把變量的值從HTML代碼中分離處理。

ShellPage:一個(gè)簡(jiǎn)單易用的類(lèi),,可以讓你的整個(gè)網(wǎng)站布局基于模板文件,,修改模板就能改變整個(gè)站點(diǎn)。

STP Simple Template Parser:一個(gè)簡(jiǎn)單,、輕量級(jí)并且易于使用的模板分析類(lèi),。它可以從多個(gè)模板中組裝一個(gè)頁(yè)面,把結(jié)果頁(yè)面輸出到瀏覽器或者文件系統(tǒng),。

OO Template Class:一個(gè)你可以用在自己程序中的面向?qū)ο蟮哪0孱?lèi),。

SimpleTemplate:一個(gè)可以創(chuàng)建和結(jié)構(gòu)化網(wǎng)站的模板引擎。它可以解析和編譯模板,。

bTemplate:短小但是快速的模板類(lèi),,允許你把PHP邏輯代碼從HTML修飾代碼中分離。

Savant:一個(gè)強(qiáng)大且輕量級(jí)的PEAR兼容模板系統(tǒng),。它是非編譯型的,,使用PHP語(yǔ)言本身做為它的模板語(yǔ)言。

ETS - easy template system:可以使用完全相同數(shù)據(jù)重組模板的模板系統(tǒng),。

EasyTemplatePHP:適用于你的站點(diǎn)的一個(gè)簡(jiǎn)單但是強(qiáng)大的模板系統(tǒng),。

vlibTemplate:一個(gè)快速、全能的模板系統(tǒng),,它包含一個(gè)緩存和調(diào)試類(lèi),。

AvanTemplate:多字節(jié)安全的模板引擎,占用很少系統(tǒng)資源,。它支持變量替換,,內(nèi)容塊可以設(shè)置顯示或隱藏

Grafx Software’s Fast Template:一個(gè)修改版本的Fast Template系統(tǒng),它包括緩存功能,,調(diào)試控制臺(tái)以及沉默去除為賦值塊,。

TemplatePower:一個(gè)快速、簡(jiǎn)單,、功能強(qiáng)大的模板類(lèi),。主要功能有嵌套的動(dòng)態(tài)塊支持,塊/文件包含支持以及顯示/隱藏未賦值的變量,。

TagTemplate:這個(gè)庫(kù)的功能被設(shè)計(jì)來(lái)使用模板文件,,同時(shí)允許你從HTML文件檢索信息。

htmltmpl: templating engine:一個(gè)適用于Python和PHP的模板引擎,。它面向希望在項(xiàng)目中分離代碼和設(shè)計(jì)的web應(yīng)用開(kāi)發(fā)人員,。

PHP Class for Parsing Dreamweaver templates:一個(gè)分析Dreamweaver模板的簡(jiǎn)單類(lèi),,被用于Gallery 2 和WordPress的自定義模塊中。

MiniTemplator (Template Engine):針對(duì)HTML文件的一個(gè)緊湊型模板引擎,。對(duì)于模板變量和塊定義它具有簡(jiǎn)單的語(yǔ)法,。其中塊可以嵌套。

Layout Solution:簡(jiǎn)化網(wǎng)站開(kāi)發(fā)和維護(hù),。它擁有常用的變量和頁(yè)面元素使你不需要重復(fù)做頁(yè)面布局工作,。

Cached Fast Template:它已經(jīng)納入 FastTemplate ,允許你緩存模板文件,,甚至可以在分離的塊內(nèi)容上緩存不同的規(guī)格,。

TinyButStrong:一個(gè)支持MySQL,Odbc,Sql-Server和ADODB的模板引擎。它包含7個(gè)方法和兩個(gè)屬性,。

Brian Lozier’s php based template engine:只有2K大小,,非常快并且是面向?qū)ο笤O(shè)計(jì),。

WACT:一個(gè)從設(shè)計(jì)中分離代碼的模板引擎,。

PHPTAL:一個(gè)PHP下面的XML/XHTML模板庫(kù)。

Rong_View_Wudimei:Wudimei開(kāi)發(fā)的國(guó)產(chǎn)框架Rong Framework的模板引擎,,它類(lèi)似于smarty,,優(yōu)點(diǎn)是速度快,缺點(diǎn)是模板標(biāo)簽較少,,不過(guò)夠用了,。

框架介紹thinkphp

ThinkPHP是一個(gè)免費(fèi)開(kāi)源的,快速,、簡(jiǎn)單的面向?qū)ο蟮?輕量級(jí)PHP開(kāi)發(fā)框架 ,,創(chuàng)立于2006年初,遵循Apache2開(kāi)源協(xié)議發(fā)布,,是為了敏捷WEB應(yīng)用開(kāi)發(fā)和簡(jiǎn)化企業(yè)應(yīng)用開(kāi)發(fā)而誕生的,。ThinkPHP從誕生以來(lái)一直秉承簡(jiǎn)潔實(shí)用的設(shè)計(jì)原則,在保持出色的性能和至簡(jiǎn)的代碼的同時(shí),,也注重易用性,。并且擁有眾多的原創(chuàng)功能和特性,在社區(qū)團(tuán)隊(duì)的積極參與下,,在易用性,、擴(kuò)展性和性能方面不斷優(yōu)化和改進(jìn),已經(jīng)成長(zhǎng)為國(guó)內(nèi)最領(lǐng)先和*影響力的WEB應(yīng)用開(kāi)發(fā)框架,,眾多的典型案例確�,?梢苑(wěn)定用于商業(yè)以及門(mén)戶級(jí)的開(kāi)發(fā)。

PHP認(rèn)證級(jí)別

PHP課程由初級(jí)(IFE)、中級(jí)(IPE)和高級(jí)(IAE)三個(gè)部分,。

IFE即Index Front-end Engineer的縮寫(xiě),,指數(shù)前端工程師的意思,。

IPE即 Index PHP Engineer 的縮寫(xiě),,意思是指數(shù)PHP工程師。

IAE即 Index architecture/advanced engineer 的縮寫(xiě),,意思是:指數(shù)高級(jí)/架構(gòu)工程師,。

PHP安全

PHP其實(shí)不過(guò)是Web服務(wù)器的一個(gè)模塊功能,所以首先要保證Web服務(wù)器的安全,。當(dāng)然Web服務(wù)器要安全又必須是先保證系統(tǒng)安全,,這樣就扯遠(yuǎn)了,無(wú)窮無(wú)盡,。常見(jiàn)的web安全漏洞有:注入攻擊,,跨站攻擊,服務(wù)器自身漏洞等,,對(duì)應(yīng)的詳細(xì)解釋?zhuān)斠?jiàn):擴(kuò)展閱讀中的《WEB安全性-2010_OWASP_TOP10》,,這里有很詳盡的解釋。

PHP的優(yōu)點(diǎn)學(xué)習(xí)過(guò)程和方法

PHP的語(yǔ)法類(lèi)似于C,,Perl,,ASP或者JSP。對(duì)于那些對(duì)上述之一的語(yǔ)言較熟悉的人來(lái)說(shuō),,PHP太簡(jiǎn)單了,。相反的,如果你對(duì)PHP了解較多,,那么你對(duì)于其他幾種語(yǔ)言的學(xué)習(xí)都很簡(jiǎn)單了,。你只需要很短的時(shí)間內(nèi)將PHP的核心語(yǔ)言特點(diǎn)全部掌握,你可能已經(jīng)非常了解HTML,,甚至你已經(jīng)知道怎樣用編輯設(shè)計(jì)軟件或者手工來(lái)制作好看的WEB站點(diǎn),。由于PHP代碼能夠無(wú)障礙的添加進(jìn)你的站點(diǎn),在你設(shè)計(jì)和維護(hù)站點(diǎn)的同時(shí),,你可以很輕松的加入PHP使得你的站點(diǎn)更加具有動(dòng)態(tài)特性,。

數(shù)據(jù)庫(kù)連接

PHP可以編譯成具有與許多數(shù)據(jù)庫(kù)相連接的函數(shù)。PHP與MySQL是絕佳的組合,,如果再加上Apache服務(wù)器,,就是相當(dāng)完美的了。你還可以自己編寫(xiě)外圍的函數(shù)取間接存取數(shù)據(jù)庫(kù),。通過(guò)這樣的途徑當(dāng)你更換使用的數(shù)據(jù)庫(kù)時(shí),,可以輕松的更改編碼以適應(yīng)這樣的變化。PHPLIB就是最常用的可以提供一般事務(wù)需要的一系列基庫(kù)。

可擴(kuò)展性

就像前面說(shuō)的那樣,,PHP已經(jīng)進(jìn)入了一個(gè)高速發(fā)展的時(shí)期,。對(duì)于一個(gè)非程序員來(lái)說(shuō)為PHP擴(kuò)展附加功能可能會(huì)比較難,但是對(duì)于一個(gè)PHP程序員來(lái)說(shuō)并不困難,。

PHP可伸縮性

傳統(tǒng)上網(wǎng)頁(yè)的交互作用是通過(guò)CGI來(lái)實(shí)現(xiàn)的,。CGI程序的伸縮性不很理想,因?yàn)樗鼮槊恳粋(gè)正在運(yùn)行的CGI程序開(kāi)一個(gè)獨(dú)立進(jìn)程,。解決方法就是將經(jīng)常用來(lái)編寫(xiě)CGI程序的語(yǔ)

言的解釋器編譯進(jìn)你的web服務(wù)器(比如mod_perl,JSP),。PHP就可以以這種方式安裝,雖然很少有人愿意這樣以CGI方式安裝它,。內(nèi)嵌的PHP可以具有更高的可伸縮性,。

PHP免費(fèi)安裝

PHP源代碼包安裝版:這個(gè)版本適合已經(jīng)有自己獨(dú)立的網(wǎng)站域名、網(wǎng)站空間的專(zhuān)業(yè)網(wǎng)站建設(shè)用戶,。使用方法依然其為簡(jiǎn)單,,只需三步:

*、到官方網(wǎng)站:下載 PHP源代碼包安裝版*版本,,解壓下載文件,,將其中的全部?jī)?nèi)容上傳到你的支持PHP的網(wǎng)站空間

第二、改更文件屬性,,請(qǐng)將根目錄下以PHP為后綴名的文件和”/include/domain.php”和 “/attachments” 和 “/data”文件夾以及文件夾下所有的文件屬性改成“可讀”,、“可寫(xiě)”、“可執(zhí)行”,,通常是“755”,。

第三、打開(kāi)你的網(wǎng)站根目錄,,系統(tǒng)會(huì)自動(dòng)運(yùn)行setup安裝程序,,按提示點(diǎn)下一步操作即可。

友情提示:當(dāng)你下載我們的軟件并看到這份說(shuō)明時(shí),,則說(shuō)明你一定是對(duì)企業(yè)網(wǎng)站建設(shè)有一定的需求或者你是一個(gè)網(wǎng)站建設(shè)技術(shù)學(xué)習(xí)者,。

文件格式

對(duì)于只含有 php 代碼的文件,我們將在文件結(jié)尾處忽略掉 "?>",。這是為了防止多余的空格或者其它字符影響到代碼,。

例如:

$foo = 'foo';

縮進(jìn)應(yīng)該能夠反映出代碼的邏輯結(jié)果,盡量使用四個(gè)空格,,禁止使用制表符TAB,,因?yàn)檫@樣能夠保證有跨客戶端編程器軟件的靈活性。

例如:

變量賦值建議保持相等間距和排列,。

例如:

每行代碼長(zhǎng)度應(yīng)控制在80個(gè)字符以內(nèi),,最長(zhǎng)不超過(guò)120個(gè)字符。因?yàn)?linux 讀入文件一般以80列為單位,就是說(shuō)如果一行代碼超過(guò)80個(gè)字符,,那么系統(tǒng)將為此付出額外操作指令,。這個(gè)雖然看起來(lái)是小問(wèn)題,但是對(duì)于追求完美的程序員來(lái)說(shuō)也是值得注意并遵守的規(guī)范,。

每行結(jié)尾不允許有多余的空格,。

Php文件記事本編輯亂碼問(wèn)題

一般情況下,記事本編輯器在對(duì)文件進(jìn)行完編輯并保存之時(shí),,其默認(rèn)編碼為ANSI,,中文。然則更多的時(shí)候,,php在語(yǔ)言環(huán)境設(shè)置時(shí)語(yǔ)言多數(shù)為utf-8,直接保存并用于apache等http-server解析后就會(huì)出現(xiàn)亂碼,。

為此,,應(yīng)該注意在用記事本編輯完后可將文件用“另存為”的方式對(duì)文件進(jìn)行保存,并將“文件類(lèi)型”選擇“所有文件”,,編碼與文件指定語(yǔ)言編碼一致即可,。

算數(shù)運(yùn)算符

PHP 的運(yùn)算符包括算術(shù)運(yùn)算符、賦值運(yùn)算符,、比較運(yùn)算符和邏輯運(yùn)算符,。

算數(shù)運(yùn)算符:

加,減,,乘,,除,取模(取余)

+,、-,、*、/,、%

賦值運(yùn)算符:(以下解釋在許多書(shū)中有所不同)

賦值,,加賦值,減賦值,、乘賦值,、除賦值,連字賦值

=,、+=,、-=、*=,、/=,、.=

位運(yùn)算符:

位與、位或、位亦或,、位非,、左移、右移

&,、|,、^、~,、<<,、>>

比較運(yùn)算符:

等于、全等于,、不等于,、不全等于、大于,、小于,、大于等于、小于等于

==,、===,、!=(<>)、!==,、>,、<、>=,、<=

邏輯運(yùn)算符:

邏輯與,、邏輯或、邏輯非,、邏輯亦或

&&,、||、!,、xor

字符串運(yùn)算符:

. 連接兩個(gè)字符串

常用函數(shù)/PHP[超文本預(yù)處理器]

$_SERVER

$_SERVER是PHP語(yǔ)言中獲取服務(wù)器相關(guān)資料的函數(shù),,顯示相關(guān)函數(shù)代碼。

具體函數(shù):

$_SERVER['PHP_SELF'] #當(dāng)前正在執(zhí)行腳本的文件名,,與 document root相關(guān),。

$_SERVER['argv'] #傳遞給該腳本的參數(shù)。

$_SERVER['argc'] #包含傳遞給程序的命令行參數(shù)的個(gè)數(shù)(如果運(yùn)行在命令行模式),。

$_SERVER['GATEWAY_INTERFACE'] #服務(wù)器使用的 CGI 規(guī)范的版本,。例如,“CGI/1.1”,。

$_SERVER['SERVER_NAME'] #當(dāng)前運(yùn)行腳本所在服務(wù)器主機(jī)的名稱,。

$_SERVER['SERVER_SOFTWARE'] #服務(wù)器標(biāo)識(shí)的字串,,在響應(yīng)請(qǐng)求時(shí)的頭部中給出。

$_SERVER['SERVER_PROTOCOL'] #請(qǐng)求頁(yè)面時(shí)通信協(xié)議的名稱和版本,。例如,,“HTTP/1.0”。

$_SERVER['REQUEST_METHOD'] #訪問(wèn)頁(yè)面時(shí)的請(qǐng)求方法,。例如:“GET”,、“HEAD”,“POST”,,“PUT”,。

$_SERVER['QUERY_STRING'] #查詢(query)的字符串。

$_SERVER['DOCUMENT_ROOT'] #當(dāng)前運(yùn)行腳本所在的文檔根目錄,。在服務(wù)器配置文件中定義,。

$_SERVER['HTTP_ACCEPT'] #當(dāng)前請(qǐng)求的 Accept: 頭部的內(nèi)容。

$_SERVER['HTTP_ACCEPT_CHARSET'] #當(dāng)前請(qǐng)求的 Accept-Charset: 頭部的內(nèi)容,。例如:“iso-8859-1,*,utf-8”,。

$_SERVER['HTTP_ACCEPT_Encoding'] #當(dāng)前請(qǐng)求的 Accept-Encoding: 頭部的內(nèi)容。例如:“gzip”,。

$_SERVER['HTTP_ACCEPT_LANGUAGE']#當(dāng)前請(qǐng)求的 Accept-Language: 頭部的內(nèi)容。例如:“en”,。

$_SERVER['HTTP_CONNECTION'] #當(dāng)前請(qǐng)求的 Connection: 頭部的內(nèi)容,。例如:“Keep-Alive”。

$_SERVER['HTTP_HOST'] #當(dāng)前請(qǐng)求的 Host: 頭部的內(nèi)容,。

$_SERVER['HTTP_REFERER'] #鏈接到當(dāng)前頁(yè)面的前一頁(yè)面的 URL 地址,。

$_SERVER['HTTP_USER_AGENT'] #當(dāng)前請(qǐng)求的 User_Agent: 頭部的內(nèi)容。

$_SERVER['REMOTE_ADDR'] #正在瀏覽當(dāng)前頁(yè)面用戶的 IP 地址,。

$_SERVER['REMOTE_HOST'] #正在瀏覽當(dāng)前頁(yè)面用戶的主機(jī)名,。

$_SERVER['REMOTE_PORT'] #用戶連接到服務(wù)器時(shí)所使用的端口。

$_SERVER['SCRIPT_FILENAME'] #當(dāng)前執(zhí)行腳本的*路徑名,。

$_SERVER['SERVER_ADMIN'] #管理員信息

$_SERVER['SERVER_PORT'] #服務(wù)器所使用的端口

$_SERVER['SERVER_SIGNATURE'] #包含服務(wù)器版本和虛擬主機(jī)名的字符串,。

$_SERVER['PATH_TRANSLATED'] #當(dāng)前腳本所在文件系統(tǒng)(不是文檔根目錄)的基本路徑。

$_SERVER['SCRIPT_NAME'] #包含當(dāng)前腳本的路徑,。這在頁(yè)面需要指向自己時(shí)非常有用,。

$_SERVER['REQUEST_URI'] #訪問(wèn)此頁(yè)面所需的 URI。例如,,“/index.html”,。

$_SERVER['PHP_AUTH_USER'] #當(dāng) PHP 運(yùn)行在 Apache 模塊方式下,并且正在使用 HTTP 認(rèn)證功能,,這個(gè)變量便是用戶輸入的用戶名,。

$_SERVER['PHP_AUTH_PW'] #當(dāng) PHP 運(yùn)行在 Apache 模塊方式下,,并且正在使用 HTTP 認(rèn)證功能,這個(gè)變量便是用戶輸入的密碼,。

$_SERVER['AUTH_TYPE'] #當(dāng) PHP 運(yùn)行在 Apache 模塊方式下,,并且正在使用 HTTP 認(rèn)證功能,這個(gè)變量便是認(rèn)證的類(lèi)型,。

$_SERVER['PATH_INFO'] #Contains any client-provided pathname information trailing the actual script filename but preceding the query string, if available. For instance, if the current script was accessed via the URL example/php/path_info.php/some/stuff?foo=bar, then$_SERVER['PATH_INFO'] would contain /some/stuff.

$_SERVER['ORIG_PATH_INFO'] #Original version of 'PATH_INFO' before processed by PHP.

相關(guān)技巧:

1.獲取腳本網(wǎng)頁(yè)地址二級(jí)路徑:

案例如下,,腳本網(wǎng)址路徑“so/so/index.php”,需要“so/so/”這個(gè)地址,,而地址是根據(jù)不同博客地址而變化的,。其中“so”可用“$_SERVER['HTTP_HOST']”生成,但網(wǎng)絡(luò)上卻沒(méi)有相關(guān)函數(shù),。

查找了php,,發(fā)現(xiàn)一位網(wǎng)友有如下的生成思路:先用“$_SERVER['PHP_SELF']”生成腳本路徑:“/so/index.php”,再用“$scriptname=end(explode('/',$_SERVER['PHP_SELF']));”截取腳本文件名:“index.php”,,再用替換函數(shù)“$scriptpath=str_replace($scriptname,'',$_SERVER['PHP_SELF']);”獲取二級(jí)路徑:“/so/”,。

然后使用顯示二級(jí)路徑,這樣就解決了缺失函數(shù)問(wèn)題,。

類(lèi)似“PHP官方網(wǎng)站”
與“PHP官方網(wǎng)站”相關(guān)的網(wǎng)站