澳洲幸运10开奖时间
手機版
當前位置: 百鳴 > 電腦網絡 > 程序編程

PHP官方網站

網站地址:
網站名稱:
PHP官方網站
網站熱點:
security,wiki,introduction,variables,exceptions
登陸狀態:
正常
網站品質:
8
世界排名:
732
更新日期:
2019/12/6 11:51:44
網站介紹:
PHP: Hypertext Preprocessor
網站百科

發展歷程/PHP[超文本預處理器]

PHP原始為Personal Home Page的縮寫,已經正式更名為"PHP: Hypertext Preprocessor"。注意不是“Hypertext Preprocessor”的縮寫,這種將名稱放到定義中的寫法被稱作遞歸縮寫。PHP于1994年由Rasmus Lerdorf創建,剛剛開始是Rasmus Lerdorf為了要維護個人網頁而制作的一個簡單的用Perl語言編寫的程序。這些工具程序用來顯示Rasmus Lerdorf的個人履歷,以及統計網頁流量。后來又用C語言重新編寫,包括可以訪問數據庫。他將這些程序和一些表單直譯器整合起來,稱為PHP/FI。PHP/FI可以和數據庫連接,產生簡單的動態網頁程序。

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

在1997年,任職于Technion IIT公司的兩個以色列程序設計師:Zeev Suraski和Andi Gutmans,重寫了 PHP 的剖析器,成為PHP 3的基礎。而PHP也在這個時候改稱為PHP:Hypertext Preprocessor。經過幾個月測試,開發團隊在1997年11月發布了PHP/FI 2。隨后就開始 PHP 3的開放測試,較后在1998年6月正式發布PHP 3。Zeev Suraski和Andi Gutmans在PHP 3發布后開始改寫PHP的核心,這個在1999年發布的剖析器稱為 Zend Engine,他們也在以色列的Ramat Gan成立了Zend Technologies來管理PHP的開發。

在2000年5月22日,以Zend Engine 1.0為基礎的PHP 4正式發布,2004年7月13日則發布了PHP 5,PHP 5則使用了第二代的Zend Engine。PHP包含了許多新特色,像是強化的面向對象功能、引入PDO(PHP Data Objects,一個存取數據庫的延伸函數庫)、以及許多效能上的增強。PHP 4已經不會繼續更新,以鼓勵用戶轉移到PHP5。

2008年PHP 5成為了PHP*有在開發的PHP版本。將來的PHP 5.3將會加入Late static binding和一些其他的功能強化。PHP 6的開發也正在進行中,主要的改進有移除register_globals、magic quotes 和Safe mode的功能。

2013年6月20日,PHP開發團隊自豪地宣布推出PHP5.5.0。此版本包含了大量的新功能和bug修復。需要開發者特別注意的一點是不再支持Windows XP和2003系統。

2014年10月16日,PHP開發團隊宣布PHP5.6.2可用。四安全相關的錯誤是固定在這個版本,包括修復cve-2014-3668,cve-2014-3669和cve-2014-3670。所有的PHP5.6鼓勵用戶升級到這個版本。

開發工具/PHP[超文本預處理器]

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

類型/PHP[超文本預處理器]

php支持八種原始類型。

四種標量類型

?boolean(布爾型)

?integer(整型)

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

?string(字符串)

兩種復合類型:

array(數組)、object(對象)

較后是兩種特殊類型

resource(資源)、NULL

為了確保代碼的易讀性,本手冊還介紹了一些偽類型:

?mixed

?number

?callback

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

變量的類型通常不是由程序員設定的,確切地說,是由php根據該變量使用的上下文在運行時決定的。

注:如果想查看某個表達式的值和類型,用var_dump()。

注:如果只是想得到一個易讀懂的類型的表達方式用于調試,用gettype()。要查看某個類型,不要用gettype(),而用is_type函數。

特性/PHP[超文本預處理器]

PHP的特性包括:
1.PHP獨特的語法混合了C、Java、Perl以及PHP自創新的語法。2.PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,
PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;
PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。
3.PHP支持幾乎所有流行的數據庫以及操作系統。
4.最重要的是PHP可以用C、C++進行程序的擴展。

優勢/PHP[超文本預處理器]

1、開放的源代碼:
所有的PHP源代碼事實上都可以得到。
2、PHP是免費的:
和其它技術相比,PHP本身免費且是開源代碼。
3、php的快捷性:
程序開發快,運行快,技術本身學習快。嵌入于HTML:因為PHP可以被嵌入于HTML語言,它相對于其他語言。編輯簡單,實用性強,更適合初學者。
4、跨平臺性強:
由于PHP是運行在服務器端的腳本,可以運行在UNIX、LINUX、WINDOWS、Mac OS下。
5、效率高:
PHP消耗相當少的系統資源。
6、圖像處理:
用PHP動態創建圖像
7、面向對象:
在php4,php5中,面向對象方面都有了很大的改進,php完全可以用來開發大型商業程序。
8、專業專注:
PHP支持腳本語言為主,同為類C語言。

技術應用/PHP[超文本預處理器]

1.偽靜態
2.靜態頁面生成
3.數據庫緩存
4.過程緩存
5.div+cssw3c標準
6.大負荷
7.分布式
8.flex
9.桌面程序應用(不擅長)
10.支持MVC模型
11.Smarty模版引擎

參考手冊/PHP[超文本預處理器]

函數完整參考手冊:

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

版本對比 /PHP[超文本預處理器]

PHP版本VC6與VC9、Thread Safe與None-Thread Safe等的區別
PHP的大版本主要分三支:PHP4/PHP5/PHP6
其中,PHP4由于太古老、對QQ支持不力已基本被淘汰,請無視PHP4。
PHP6由于基本沒有生產線上的應用,還基本只是一款概念產品,很多功能已在PHP5.3.3上實現,所以也不詳述,請無視PHP6。
PHP5的版本主要分四支:PHP5.2之前的版本、PHP5.2.X、PHP5.3和日前發布的PHP5.4。

選擇版本

PHP5.2之前的版本不值得考慮,因為某些功能缺陷或者BUG。PHP5.4還處于Beta試用的版本號,非穩定版本,請無視PHP5.4。
主流PHP程序對PHP5.2.X的兼容性*,而每次版本號的升級帶來的都是安全性和穩定性的改善,所以宜挑選*版本。目前PHP5.2系列*是PHP5.2.17。
而如果產品是自己開發自己使用,PHP5.3在某些方面更具優勢,在穩定性上更勝一籌,增加了很多PHP5.2所不具有的功能,比如內置php-fpm、更完善的垃圾回收算法、命名空間的引入、sqlite3的支持等等,是部署項目值得考慮的版本,強烈推薦PHP5.3.3。
除了版本號的不同,同一版本號的PHP版本也有區別,并且在選擇PHP擴展的時候需要注意。
install版:可執行的MSI格式安裝包。
ZIP版:解壓即可用。和install版無區別。建議選擇ZIP版。
DEBUG版:最終用戶無需關心。

VC6與VC9

如果你在apache1或者apache2下使用PHP,你應該選擇VC6的版本
如果你在IIS下使用PHP應該選擇VC9的版本,VC6的版本使用visual studio6編譯,VC9使用Visual Studio 2008編譯,并且改進了性能和穩定性。VC9版本的PHP需要你安裝Microsoft 2008 C++ Runtime。不要在apache下使用VC9的版本。

TS和NTS

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

查看版本

一個很簡單的辦法就是phpinfo();
Thread Safety disabled是NTS,enabled是TS
Configure Command看到VC98字樣的是VC6,Compiler標明 MSVC9 (Visual C++ 2008) 的是VC9
在WIN7下:IIS7+NTS+FastCGI+vc9 是*搭檔或者apache+fastcgi+nts+vc6。
在WINXP下:Apache+TS+Apache module +vc6最合適的搭檔。

PHP3/PHP[超文本預處理器]

PHP3跟Apache服務器的緊密結合的特性;加上它可以不斷的更新及加入新的功能,而且幾乎支持所有主流與非主流數據庫。再以它能高速的執行效率,使得PHP在1999年中的使用站點已經超過了150000。加上它的源代碼完全公開,在 Open Source意識抬頭的今天,它更是這方面的中流砥柱。不斷地有新的函數庫加入,以及不停地更新的活力。使得PHP無論在UNIX、LINUX或是Windows的平臺上都可以有更多新的功能。它提供豐富的函數,使得在程序設計方面有著更好的支持。

PHP4/PHP[超文本預處理器]

簡介

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

優越性

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

PHP5/PHP[超文本預處理器]

PHP5在長時間的開發及多個預發布版本后,2004年7月13日,PHP5.0發布。該版本以Zend引擎Ⅱ為引擎,并且加入了新功能如PHP Data Objects(PDO)。PHP5.0版本強化更多的功能。首先,完全實現面向對象,提供名為PHP兼容模式的功能。其次是XML功能,PHP5.0版本支持可直觀地訪問XML數據、名為SimpleXML的XML處理用界面。同時還強化了XMLWeb服務支持,而且標準支持SOAP擴展模塊。數據庫方面,PHP新版本提供旨在訪問MySQL的新界面——MySQL。除此前的界面外,還可以使用面向對象界面和預處理語句(Prepared Statement)等MySQL的新功能.另外,PHP5.0上還捆綁有小容量RDBMS-SQLite.

新對象模式

*構造函數和析構函數 * 對象的引用 * 對象的克隆 * 對象中的私有、公共及受保護模式 * 接口 (Interfaces)
* 抽象類 * __call * __set 和 __get * 靜態成員
構造函數和析構函數
在 PHP4 中,當函數與對象同名時,這個函數將成為該對象的構造函數,并且在 PHP4 中沒有析構函數的概念。
在 PHP5 中,構造函數被統一命名為 __construct,并且引入了析構函數的概念,被統一命名為 __destruct。

對象的引用

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

對象的克隆

當一個對象始終以引用的形式來被調用時,如果我想得到該對象的一個副本,該怎么辦呢?PHP5 提供了一個新的功能,就是對象的克隆,語法為 __clone。

抽象類

抽象類不能被實例化。
抽象類與其它類一樣,允許定義變量及方法。
抽象類同樣可以定義一個抽象的方法,抽象類的方法不會被執行,不過將有可能會在其派生類中執行。
__call
PHP5 的對象新增了一個專用方法 __call(),這個方法用來監視一個對象中的其它方法。如果你試著調用一個對象中不存在的方法,__call 方法將會被自動調用。
__set 和 __get
這是一個很棒的方法,__set 和 __get 方法可以用來捕獲一個對象中不存在的變量和方法。

類型指示

在 PHP5 中,你可以在對象的方法中指明其參數必須為另一個對象的實例。

靜態成員

靜態成員和靜態方法在面象對象編程的術語中被稱作 “類方法(class methods)” 和 “類變量(class variables)”。
“類方法” 在一個對象沒有實例化前允許被調用。同樣,“類變量” 在一個對象沒有實例化前可以被獨立操作控制(不需要用一個對象的方法來控制)。

異常處理

異常處理是公認的處理程序錯誤的理想方法,在 Java及 C 中都有這個概念,我們欣喜的看到,在 PHP5 已經加入了這方面的應用。你可以嘗試使用 “try” 和 “catch” 來控制程序的錯誤。當有錯誤發生的時候,代碼會把錯誤交給 “catch” 子句來處理,在 “catch” 子句中,你需要指明要把錯誤交給某個對象處理,這樣做可以使代碼結構看起來更清晰,因為我們可以把所有的錯誤信息交給一個對象來處理。
自定義錯誤處理
你可以很方便的用自定義的處理錯誤的代碼來控制你的程序中的意外。你僅僅需要從異常類中派生出一個自己的錯誤控制類,在你自己的錯誤控制類中,你需要有一個構造函數和一個 getMessage 方法。
命名空間

名稱空間對類的分組或函數分組很有用。它可以把一些相關的類或函數給組合到一起,方便以后調用。

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

加密

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

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

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

PHP6設想/PHP[超文本預處理器]

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

環境配置/PHP[超文本預處理器]

Windows下

軟件需求(*版)

WindowsVista或更高版本;

Apache2+或IIS6+或Nginx

安裝過程

將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。

運行C:\Web\apache\Apache\Apache.exe-i-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。(如果主機有固定IP地址,此處改為主機IP地址。如BindAddress211.101.152.106),找到“ServerName”字段,將其改為ServerNamelocalhost。(如主機有固定主機名,此處改為主機的主機名。如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[超文本預處理器]

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

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

而在 Internet 上它也支持了相當多的通訊協議 (protocol),包括了與電子郵件相關的 IMAP,POP3;網管系統 SNMP;網絡新聞NNTP;帳號共用 NIS;全球信息網 HTTP 及 Apache 服務器;目錄協議 LDAP 以及其它網絡的相關函數。

除此之外,用 PHP 寫出來的 Web 后端 CGI 程序,可以很輕易的移植到不同的操作系統上。例如,先以 Linux 架的網站,在系統負荷過高時,可以快速地將整個系統移到 SUN 工作站上,不用重新編譯 CGI 程序。面對快速發展的 Internet,這是長期規劃的*選擇。

相關語法及概念

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

注釋的語法有三種:

基本的結構控制語句:

一個PHP實例:

php對面向對象的支持

面向對象編程的概念:

不同的作者之間說法可能不一樣,但是一個OOP語言必須有以下幾方面:

1.抽象數據類型和信息封裝

2.繼承

3.多態

在PHP中是通過類來完成封裝的:

當然你可以按自己的喜好進行定義,但*保持一種標準,這樣會更有效。數據成員在類中使用"var"聲明來定義,在給數據成員賦值之前,它們是沒有類型的。一個數據成員可以是一個整數,一個數組,一個相關數組(associative array)或者是一個對象。方法在類中被定義成函數形式,在方法中訪問類成員變量時,你應該使用$this->name,否則對一個方法來說,它只能是局部變量。

使用new操作符來創建一個對象:

然后你可以使用成員函數通過:

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

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

你可以使用

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

你可以在你的類中定義構造函數。構造函數是一個與類名同名的方法,當你創建一個類的對象時會被調用,例如:

所以你可以創建一個對象,通過:

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

接著:

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

當一個派生類的對象被創建時,只有它的構造函數被調用,父類的構造函數沒被調用,如果你想調用基類的構造函數,你必須要在派生類的構造函數中用parent::__construct()調用。可以這樣做是在派生類中所有父類的方法都是可用的。

OOP的一個很好的機制是使用抽象類。抽象類是不能實例化,只能提供給派生類一個接口。設計者通常使用抽象類來強迫程序員從基類派生,這樣可以確保新的類包含一些期待的功能。在PHP中沒有標準的方法,但是:如果你需要這個特性,可以通過定義基類,并在它的構造函數后加上"die" 的調用,這樣就可以保證基類是不可實例化的,在每一個方法(接口)后面加上"die" 語句,所以,如果一個程序員在派生類中沒有復蓋方法,將引發一個錯誤。而且因為PHP 是無類型的,你可能需要確認一個對象是來自于你的基類的派生類,那么在基類中增加一個方法來實義類的身份(返回某種標識id),并且在你接收到一個對象參數時校驗這個值。當然,如果一個不好的邪惡程序員在派生類中復蓋了這個方法,這種方法就不起作用了,不過一般問題多在懶惰的程序員身上,而不是邪惡的程序員。

當然,能夠讓基類對程序員無法看到是很好的,只要將接口打印出來做他們的工作就可以了。PHP 5 引入了析構函數的概念,這類似于其它面向對象的語言,如 C++。析構函數會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執行。

重載(與復蓋不同)在PHP中不支持,因為PHP是弱類型語言。在OOP中,你可以重載一個方法來實現兩個或重多的方法具有相同的名字,但是有不同數量或類型的參數(這要看語言)。PHP 是一種松散類型的語言,所以通過類型重載不起作用,然而通過參數的個數不同來重載也不起作用。

有時在OOP中重載構造函數非常好,這樣你可以通過不同的方法創建對象(變量函數)。在PHP中實現它的技巧是:

通過在類中的額外的處理,使用這個類對用戶是透明的:

有時這個非常好用。

多態

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

多態性在象PHP這樣的解釋語言(想象一下一個C++編譯器生成這樣的代碼,你應該調用哪一個方法?你也不知道你擁有的對象是什么類型的,好,這不是重點)是非常容易和自然的。所以PHP當然支持多態性。

用PHP進行面向對象編程

一些"純化論者(purists)"可能會說PHP不是一個真正的面向對象的語言,這是事實。PHP 是一個混合型語言,你可以使用OOP,也可以使用傳統的過程化編程。然而,對于大型項目,你可能想/需要在PHP 中使用純的OOP去聲明類,而且在你的項目只用對象和類。

隨著項目越來越大,使用OOP可能會有幫助,OOP代碼很容易維護,容易理解和重用。這些就是軟件工程的基礎。在基于web的項目中應用這些概念就成為將來網站成功的關鍵。

高級OOP技術

在看過基本的OOP概念后,我就可以向你展示更高級的技術:

序列化(Serializing)

PHP不支持永久對象,在OOP中永久對象是可以在多個應用的引用中保持狀態和功能的對象,這意味著擁有將對象保存到一個文件或數據庫中的能力,而且可以在以后裝入對象。這就是所謂的序列化機制。PHP 擁有序列化方法,它可以通過對象進行調用,序列化方法可以返回對象的字符串表示。然而,序列化只保存了對象的成員數據而不包括方法。

在PHP4中,如果你將對象序列化到字符串$s中,然后釋放對象,接著反序列化對象到$obj,你可以繼續使用對象的方法!我不建議這樣去做,因為(a)文檔中沒有保證這種行為在以后的版本中仍然可以使用。(b) 這個可能導致一種誤解,在你把一個序列化后的版本保存到磁盤并退出腳本時。當以后運行這個腳本時,你不能期待著在反序列化一個對象時,對象的方法也會在那里,因為字符串表示根本就不包括方法。

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

例子 :

你恢復了成員數據,但是不包括方法(根據文檔所說)。這導致了只能通過類似于使用$obj2->x來存取成員變量(你沒有別的方法!)的*辦法,所以不要在家里試它。

有一些辦法可以解決這個問題,我把它留著,因為對這篇簡潔的文章來說,他們太不好。我會很高興地歡迎在PHP的后續版本中有全序列化的特性。

使用類進行數據存儲PHP和OOP一件非常好的事情就是,你可以很容易地定義一個類來操作某件事情,并且無論何時你想用的時候都可以調用相應的類。假設你有一個HTML表單,用戶可以通過選擇產品ID號來選擇一個產品。在數據庫中有產品的信息,你想把產品顯示出來,顯示它的價格等等。你擁有不同類型的產品,并且同一個動作可能對不同的產品具有不同的意思。例如,顯示一個聲音可能意味著播放它,但是對于其它種類的產品可能意味著顯示一個存在數據庫中的圖片。你可以使用OOP或PHP來減少編碼并提高質量:

定義一個產品的類,定義它應該有的方法(例如:顯示),然后定義對每一種類型的產品的類,從產品類派后出來(SoundItem類,ViewableItem類,等等),復蓋在產品類中的方法,使它們按你的想法動作。

根據數據庫中每一種產品的類型(type)字段給類命名,一個典型的產品表可能有(id,type,price,description,等等字段)...然后在處理腳本中,你可以從數據庫中取出type值,然后實例化一個名為type的對象:

這是PHP的一個非常好的特性,你可以不用考慮對象的類型,調用$obj的顯示方法或其它的方法。使用這個技術,你不需要修改腳本去增加一個新類型的對象,只是增加一個處理它的類。

這個功能很強大,只要定義方法,而不去考慮所有對象的類型,在不同的類中按不同的方法實現它們,然后在主腳本中對任意對象使用它們,沒有if...else,也不需要兩個程序員,只有高興。

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

如果你管理一組程序員,分配工作就是很簡單的了,每個人可能負責一個類型的對象和處理它的類。

可以通過這個技術實現國際化,根據用戶所選的語言字段應用相應的類就可以了,等等。

拷貝和克隆

當你創建一個$obj的對象時,你可以通過$obj2=$obj來拷貝對象,新的對象是$obj的一個拷貝(不是一個引用),所以它具有$obj在當時的狀態。有時候,你不想這樣,你只是想生成一個象obj類一樣的一個新的對象,可以通過使用new語句來調用類的構造函數。在PHP中也可以通過序列化,和一個基類來實現,但所有的其它類都要從基類派生出來。

進入危險區域

當你序列化一個對象,你會得到某種格式的字符串,如果你感興趣,你可以調究它,其中,字符串中有類的名字(太好了!),你可以把它取出來,象:

所以假設你創建了一個"Universe"的類,并且強制所有的類都必須從universe擴展,你可以在universe 中定義一個clone的方法,如下:

你所得到的是一個新的Something類的對象,它同使用new方法,調用構造函數創建出的對象一樣。我不知道這個對你是否有用,但是Universe類可以知道派生類的名字是一個好的經驗。想象是*限制。

模板引擎

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

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

FastTemplate:一個簡單的變量插值模板類,它分析你的模板,把變量的值從HTML代碼中分離處理。

ShellPage:一個簡單易用的類,可以讓你的整個網站布局基于模板文件,修改模板就能改變整個站點。

STP Simple Template Parser:一個簡單、輕量級并且易于使用的模板分析類。它可以從多個模板中組裝一個頁面,把結果頁面輸出到瀏覽器或者文件系統。

OO Template Class:一個你可以用在自己程序中的面向對象的模板類。

SimpleTemplate:一個可以創建和結構化網站的模板引擎。它可以解析和編譯模板。

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

Savant:一個強大且輕量級的PEAR兼容模板系統。它是非編譯型的,使用PHP語言本身做為它的模板語言。

ETS - easy template system:可以使用完全相同數據重組模板的模板系統。

EasyTemplatePHP:適用于你的站點的一個簡單但是強大的模板系統。

vlibTemplate:一個快速、全能的模板系統,它包含一個緩存和調試類。

AvanTemplate:多字節安全的模板引擎,占用很少系統資源。它支持變量替換,內容塊可以設置顯示或隱藏

Grafx Software’s Fast Template:一個修改版本的Fast Template系統,它包括緩存功能,調試控制臺以及沉默去除為賦值塊。

TemplatePower:一個快速、簡單、功能強大的模板類。主要功能有嵌套的動態塊支持,塊/文件包含支持以及顯示/隱藏未賦值的變量。

TagTemplate:這個庫的功能被設計來使用模板文件,同時允許你從HTML文件檢索信息。

htmltmpl: templating engine:一個適用于Python和PHP的模板引擎。它面向希望在項目中分離代碼和設計的web應用開發人員。

PHP Class for Parsing Dreamweaver templates:一個分析Dreamweaver模板的簡單類,被用于Gallery 2 和WordPress的自定義模塊中。

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

Layout Solution:簡化網站開發和維護。它擁有常用的變量和頁面元素使你不需要重復做頁面布局工作。

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

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

Brian Lozier’s php based template engine:只有2K大小,非常快并且是面向對象設計。

WACT:一個從設計中分離代碼的模板引擎。

PHPTAL:一個PHP下面的XML/XHTML模板庫。

Rong_View_Wudimei:Wudimei開發的國產框架Rong Framework的模板引擎,它類似于smarty,優點是速度快,缺點是模板標簽較少,不過夠用了。

框架介紹thinkphp

ThinkPHP是一個免費開源的,快速、簡單的面向對象的 輕量級PHP開發框架 ,創立于2006年初,遵循Apache2開源協議發布,是為了敏捷WEB應用開發和簡化企業應用開發而誕生的。ThinkPHP從誕生以來一直秉承簡潔實用的設計原則,在保持出色的性能和至簡的代碼的同時,也注重易用性。并且擁有眾多的原創功能和特性,在社區團隊的積極參與下,在易用性、擴展性和性能方面不斷優化和改進,已經成長為國內最領先和*影響力的WEB應用開發框架,眾多的典型案例確保可以穩定用于商業以及門戶級的開發。

PHP認證級別

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

IFE即Index Front-end Engineer的縮寫,指數前端工程師的意思。

IPE即 Index PHP Engineer 的縮寫,意思是指數PHP工程師。

IAE即 Index architecture/advanced engineer 的縮寫,意思是:指數高級/架構工程師。

PHP安全

PHP其實不過是Web服務器的一個模塊功能,所以首先要保證Web服務器的安全。當然Web服務器要安全又必須是先保證系統安全,這樣就扯遠了,無窮無盡。常見的web安全漏洞有:注入攻擊,跨站攻擊,服務器自身漏洞等,對應的詳細解釋,詳見:擴展閱讀中的《WEB安全性-2010_OWASP_TOP10》,這里有很詳盡的解釋。

PHP的優點學習過程和方法

PHP的語法類似于C,Perl,ASP或者JSP。對于那些對上述之一的語言較熟悉的人來說,PHP太簡單了。相反的,如果你對PHP了解較多,那么你對于其他幾種語言的學習都很簡單了。你只需要很短的時間內將PHP的核心語言特點全部掌握,你可能已經非常了解HTML,甚至你已經知道怎樣用編輯設計軟件或者手工來制作好看的WEB站點。由于PHP代碼能夠無障礙的添加進你的站點,在你設計和維護站點的同時,你可以很輕松的加入PHP使得你的站點更加具有動態特性。

數據庫連接

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

可擴展性

就像前面說的那樣,PHP已經進入了一個高速發展的時期。對于一個非程序員來說為PHP擴展附加功能可能會比較難,但是對于一個PHP程序員來說并不困難。

PHP可伸縮性

傳統上網頁的交互作用是通過CGI來實現的。CGI程序的伸縮性不很理想,因為它為每一個正在運行的CGI程序開一個獨立進程。解決方法就是將經常用來編寫CGI程序的語

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

PHP免費安裝

PHP源代碼包安裝版:這個版本適合已經有自己獨立的網站域名、網站空間的專業網站建設用戶。使用方法依然其為簡單,只需三步:

*、到官方網站:下載 PHP源代碼包安裝版*版本,解壓下載文件,將其中的全部內容上傳到你的支持PHP的網站空間

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

第三、打開你的網站根目錄,系統會自動運行setup安裝程序,按提示點下一步操作即可。

友情提示:當你下載我們的軟件并看到這份說明時,則說明你一定是對企業網站建設有一定的需求或者你是一個網站建設技術學習者。

文件格式

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

例如:

$foo = 'foo';

縮進應該能夠反映出代碼的邏輯結果,盡量使用四個空格,禁止使用制表符TAB,因為這樣能夠保證有跨客戶端編程器軟件的靈活性。

例如:

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

例如:

每行代碼長度應控制在80個字符以內,最長不超過120個字符。因為 linux 讀入文件一般以80列為單位,就是說如果一行代碼超過80個字符,那么系統將為此付出額外操作指令。這個雖然看起來是小問題,但是對于追求完美的程序員來說也是值得注意并遵守的規范。

每行結尾不允許有多余的空格。

Php文件記事本編輯亂碼問題

一般情況下,記事本編輯器在對文件進行完編輯并保存之時,其默認編碼為ANSI,中文。然則更多的時候,php在語言環境設置時語言多數為utf-8,直接保存并用于apache等http-server解析后就會出現亂碼。

為此,應該注意在用記事本編輯完后可將文件用“另存為”的方式對文件進行保存,并將“文件類型”選擇“所有文件”,編碼與文件指定語言編碼一致即可。

算數運算符

PHP 的運算符包括算術運算符、賦值運算符、比較運算符和邏輯運算符。

算數運算符:

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

+、-、*、/、%

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

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

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

位運算符:

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

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

比較運算符:

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

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

邏輯運算符:

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

&&、||、!、xor

字符串運算符:

. 連接兩個字符串

常用函數/PHP[超文本預處理器]

$_SERVER

$_SERVER是PHP語言中獲取服務器相關資料的函數,顯示相關函數代碼。

具體函數:

$_SERVER['PHP_SELF'] #當前正在執行腳本的文件名,與 document root相關。

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

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

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

$_SERVER['SERVER_NAME'] #當前運行腳本所在服務器主機的名稱。

$_SERVER['SERVER_SOFTWARE'] #服務器標識的字串,在響應請求時的頭部中給出。

$_SERVER['SERVER_PROTOCOL'] #請求頁面時通信協議的名稱和版本。例如,“HTTP/1.0”。

$_SERVER['REQUEST_METHOD'] #訪問頁面時的請求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。

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

$_SERVER['DOCUMENT_ROOT'] #當前運行腳本所在的文檔根目錄。在服務器配置文件中定義。

$_SERVER['HTTP_ACCEPT'] #當前請求的 Accept: 頭部的內容。

$_SERVER['HTTP_ACCEPT_CHARSET'] #當前請求的 Accept-Charset: 頭部的內容。例如:“iso-8859-1,*,utf-8”。

$_SERVER['HTTP_ACCEPT_Encoding'] #當前請求的 Accept-Encoding: 頭部的內容。例如:“gzip”。

$_SERVER['HTTP_ACCEPT_LANGUAGE']#當前請求的 Accept-Language: 頭部的內容。例如:“en”。

$_SERVER['HTTP_CONNECTION'] #當前請求的 Connection: 頭部的內容。例如:“Keep-Alive”。

$_SERVER['HTTP_HOST'] #當前請求的 Host: 頭部的內容。

$_SERVER['HTTP_REFERER'] #鏈接到當前頁面的前一頁面的 URL 地址。

$_SERVER['HTTP_USER_AGENT'] #當前請求的 User_Agent: 頭部的內容。

$_SERVER['REMOTE_ADDR'] #正在瀏覽當前頁面用戶的 IP 地址。

$_SERVER['REMOTE_HOST'] #正在瀏覽當前頁面用戶的主機名。

$_SERVER['REMOTE_PORT'] #用戶連接到服務器時所使用的端口。

$_SERVER['SCRIPT_FILENAME'] #當前執行腳本的*路徑名。

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

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

$_SERVER['SERVER_SIGNATURE'] #包含服務器版本和虛擬主機名的字符串。

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

$_SERVER['SCRIPT_NAME'] #包含當前腳本的路徑。這在頁面需要指向自己時非常有用。

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

$_SERVER['PHP_AUTH_USER'] #當 PHP 運行在 Apache 模塊方式下,并且正在使用 HTTP 認證功能,這個變量便是用戶輸入的用戶名。

$_SERVER['PHP_AUTH_PW'] #當 PHP 運行在 Apache 模塊方式下,并且正在使用 HTTP 認證功能,這個變量便是用戶輸入的密碼。

$_SERVER['AUTH_TYPE'] #當 PHP 運行在 Apache 模塊方式下,并且正在使用 HTTP 認證功能,這個變量便是認證的類型。

$_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.

相關技巧:

1.獲取腳本網頁地址二級路徑:

案例如下,腳本網址路徑“so/so/index.php”,需要“so/so/”這個地址,而地址是根據不同博客地址而變化的。其中“so”可用“$_SERVER['HTTP_HOST']”生成,但網絡上卻沒有相關函數。

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

然后使用顯示二級路徑,這樣就解決了缺失函數問題。

類似“PHP官方網站”
與“PHP官方網站”相關的網站
澳洲幸运10开奖时间 重庆时时稳赚公式 55彩票计划软件 网上玩百乐门 山东群英会网站 考mba拿的是什么证书 118篮球比赛比分 女人味三肖六码 广东快乐十分开奖查 两码中特2017 河北快三怎么玩赚钱 3d最新买法稳赚不赔 1516赛季英冠积分榜 007篮球比分网 分分11选5 山西新11选5走势图表i体 动物狂欢怎么押