學習任何編程語言以前,先了解一下它的應用與發展是頗有必要的。從Web開發的歷史看來,PHP、Python和Ruby幾乎是同時出現的,都是十分有特色、優秀的開源語言,但PHP卻得到了比Python和Ruby多得多的關注度。如今愈來愈多的新公司或者新項目,新的開發類型都在使用PHP,這使得PHP相關社區愈來愈活躍,而這又反過來影響到不少項目或公司的選擇,造成一個良性的循環。就目前的狀況來看,PHP是國內大部分Web項目的首選,不少公司的團隊或項目逐漸從其餘語言轉到了PHP。PHP開發成本低,週期短,後期維護費用低,開源產品豐富,這些都是Python和Ruby沒法比擬的。本章全面介紹了PHP的發展、行業的應用、突出的優點,以及一些學習PHP的方法和建議。學習一門技術,就先從瞭解一門語言開始吧!程序員
2.1 PHP是什麼正則表達式
咱們應用的全部軟件,都是由計算機語言編寫的。目前流行的編程語言有不少,例如PHP、Java、Python、JavaScript、C/C++和Go語言等,全世界有600多種編程語言,PHP則是衆多計算機編程語言中的一種,用於網絡開發,尤爲適用於Web開發領域,主要目標是快速編寫動態網頁。PHP的語法吸取了C語言、Java和Perl的特色,利於學習,使用普遍,是一種通用的開源腳本語言。用PHP作出的動態頁面與其餘的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比徹底生成HTML標記的其餘編程語言要高許多。PHP能運行在Windows、Linux等絕大多數操做系統環境中,常與開源免費的Web服務器(Apache或Nginx)和數據庫(Mysql及Redis)配合使用,用於Linux平臺上(簡稱LAMP/LNMP),具備最高的性價比,號稱「Web架構黃金組合」,造成了如今非流行的Web開發技術。sql
2.1.1 從認識PHP開始數據庫
咱們在第1章中重點介紹了Web開發構件,PHP是其中最重要的構件,是服務器端嵌入到HTML中的腳本語言。在PHP的定義中共用到了3個形容詞:服務器端的語言、嵌入到HTML中的語言和腳本語言。分別介紹以下。編程
1.服務器端的語言瀏覽器
開發Web應用這種B/S結構的軟件,不只須要有編寫客戶端界面的語言,還要有編寫服務器端業務流程的語言。例如,編寫界面使用的HTML、CSS和JavaScript都是在用戶發出請求後,服務器再將代碼發送到客戶端,並在客戶端計算機的瀏覽器中解析執行的程序。而PHP則是服務器端運行的語言,只能在服務器端運行,而不會傳到客戶端。在PHP代碼中若是有對文件類的操做,能夠都是操做服務器上的文件,PHP獲取的時間也只能是服務器上的時間。只有當用戶請求時纔開始運行,而且有多少請求,PHP程序就會在服務器中運行多少次。PHP根據不一樣用戶的不一樣請求,完成在服務器中的業務操做,並將結果返回給用戶。服務器
2.嵌入到HTML中的語言網絡
在HTML代碼中能夠經過一些特殊的標識符號將各式各樣的語言嵌入進來。例如,前面章節中介紹的CSS、JavaScript均可以嵌入到HTML中,配合HTML一塊兒完成一些HTML完成不了的功能,或者說是對HTML語言的擴展,而它們都是由瀏覽器解析的。PHP程序雖然也是經過特殊的標識符號嵌入到HTML代碼中的,但和CSS或JavaScript不一樣的是,在HTML中嵌入的PHP代碼須要在服務器中先運行完成。若是執行後有輸出,則輸出的結果字符串會嵌入到原來的PHP代碼處,再和HTML代碼一塊兒響應給客戶端瀏覽器去解析。架構
3.腳本語言編程語言
腳本語言,又稱動態語言,咱們在第1章中已經闡述過了。腳本一般以文本(如ASCII)保存,只在被調用時進行解釋或編譯。PHP程序就是以文本格式保存在服務器端的,在請求時才由Web服務器中安裝的PHP應用模塊解析,並從上到下一步步地執行程序。
2.1.2 PHP都能作什麼
PHP能作不少事,但PHP主要是在Web開發中用於服務器端的腳本程序。PHP須要安裝PHP應用程序服務器去解釋執行,是用來協助Web服務器工做的編程語言,也能夠說是對Web服務器功能的擴展,並外掛在Web服務器上一塊兒工做。用戶若是經過瀏覽器訪問Web服務器須要獲得動態響應的結果,Web服務器就要委託PHP腳本編程語言來完成了。本書中能夠用PHP來完成如下工做,但PHP的功能遠不侷限於此,如圖2-1所示。
圖2-1 PHP在Web中的功能展現
1.收集表單數據
表單(Form)是網絡編程中最經常使用的數據輸入界面。表單一般能夠在提交時使用GET或POST方法將數據發送給PHP程序腳本。在PHP腳本中,能夠以PHP變量的形式訪問每個表單域在PHP腳本中的使用。根據PHP版本和設置的不一樣,經過變量能夠有3種方法來訪問表單數據。因此在PHP中,得到用戶輸入的具體數據是很是簡單的。
2.生成動態網頁
PHP腳本程序和客戶端的JavaScript腳本程序不一樣的是,PHP代碼是運行在服務器端的。PHP腳本程序能夠根據用戶在客戶端的不一樣輸入請求,在服務器端運行該腳本後,動態輸出用戶請求的內容。這樣客戶端就能接收到想獲得的結果,但沒法得知其背後的代碼是如何運做的。甚至能夠將Web服務器設置成讓PHP來處理全部的HTML文件,這樣一來,用戶就沒法得知服務器端到底作了什麼。
3.字符串處理
在編寫程序代碼或是進行文本處理時,常常須要操做字符串,因此字符串處理一直是程序員使用最多的技術之一。PHP是把字符串做爲一種基本的數據類型來處理的。在PHP中提供了豐富的字符串處理函數,並使用強大的正則表達式來對字符串或文本進行搜索、查找、匹配、替換等操做。
4.動態輸出圖像
使用PHP並不侷限於輸出HTML文本。PHP經過使用GD擴展庫還能用來動態輸出圖像,例如文字按鈕、驗證碼、數據統計圖等,還能夠輕鬆地編輯圖像,例如處理縮略圖、爲圖片添加水印等,具備強大的圖像處理功能。
5.服務器端文件系統操做
要想讓數據能夠長期保留,可使用數據庫或是文件系統來存取信息。在某些存取數據相對簡單的應用中,或是一些特定的應用中,沒有必要使用數據庫,就能夠採用文件操做。PHP能夠利用文件系統函數任意操做服務器中的目錄或文件,包括目錄或文件的打開、編輯、複製、建立、刪除,以及文件屬性等操做。
6.編寫數據庫支持的網頁
PHP最強大、最顯著的特性之一是它支持很大範圍的數據庫。用戶會發現利用PHP編寫數據庫支持的網頁簡單得難以置信。目前,PHP能夠鏈接任何支持世界標準的數據庫。
7.會話跟蹤控制
咱們訪問Web服務器一般是使用HTTP協議完成的,但它是一個無狀態的協議,沒有一個內建機制來維護兩個事務之間的狀態。也就是說當一個用戶在請求一個頁面後再請求另外一個頁面時,HTTP將沒法告訴咱們這兩個請求是來自同一個用戶。因此能夠在PHP中使用會話控制功能在網站中跟蹤一個用戶,這樣就能夠很容易地作到用戶登陸的支持,並根據某個用戶的受權級別和我的喜愛顯示相應的內容,也能夠根據會話控制記錄該用戶的行爲。
8.處理XML文件
PHP具備極其有效的文本處理特性,支持從POSIX擴展或者Perl正則表達式到XML文檔解析。爲了解析和訪問XML文檔,PHP 4支持SAX和DOM標準,也可使用XSLT擴展庫來轉換XML文檔。PHP 5基於強健的libxm2標準化了全部的XML擴展,並添加了SimpleXML和XMLReader支持,擴展了其在XML方面的功能。
9.支持利用大量的網絡協議
PHP還支持利用諸如LDAP、IMAP、SNMP、NNTP、POP三、HTTP、COM(Windows環境)等不可勝數的協議的服務。還能夠開放原始網絡端口,使得任何其餘的協議可以協同工做。PHP支持和全部Web開發語言之間的WDDX複雜數據交換。關於相互鏈接,PHP已經支持了對Java對象的即時鏈接,而且能夠將它們自由地用做PHP對象,甚至能夠用CORBA擴展庫來訪問遠程對象。
10.服務器端的其餘相關操做
若是將PHP用於電子商務領域,會發現其Cybercash支付、CyberMUT、VeriSign Payflow Pro及MCVE函數對於在線交易程序來講是很是有用的。另外,還有不少其餘有趣的擴展庫,例如mnoGoSearch搜索引擎函數、IRC網關函數、多種壓縮工具(gzip、bz2)、日曆轉換、翻譯等。