《PHP 7開發(fā)寶典(第4版)》詳細介紹了如何通過添加反饋表單、創(chuàng)建私人區(qū)域讓授權(quán)用戶上傳自動調(diào)整大小的圖像,或者將所有內(nèi)容存儲到數(shù)據(jù)庫中,從而使網(wǎng)站更具動態(tài)性。作者David Powers更新了他的權(quán)威書籍,介紹了新發(fā)布的PHP 7,以及這個版本所帶來的新技術(shù)和變化。
新的特性包括太空船運算符、空合并運算符、生成器、在list()函數(shù)中使用數(shù)組便捷語法、數(shù)組解引用,以及使用splat運算符進行數(shù)組解包。
PHP和MySQL數(shù)據(jù)庫是創(chuàng)建動態(tài)網(wǎng)站更受歡迎的組合。它們是免費的且易于使用,并且許多網(wǎng)絡托管公司都提供標準的安裝包。本書還涵蓋了MariaDB。MariaDB是MySQL的無縫替代品,已經(jīng)被許多Web服務器所采用。
《PHP 7開發(fā)寶典(第4版)》通過一系列實例向你提供了真正有價值的技術(shù)方案,并可以直接融入你的網(wǎng)站,優(yōu)化性能和增加功能,如文件上傳、電子郵件反饋表單、圖片庫和內(nèi)容管理系統(tǒng)等。創(chuàng)建每個解決方案時,不僅實現(xiàn)了特定功能,還提供了界面設計。
《PHP 7開發(fā)寶典(第4版)》不僅提供一系列現(xiàn)成的腳本,而且每個PHP解決方案都建立在以前的基礎之上,快速而輕松地教給你PHP和數(shù)據(jù)庫設計的基礎知識。學完本書,你將有信心開始編寫自己的腳本;如果你不愿意從頭開始編寫,也可以修改本書提供的代碼以滿足自己的需求。從本書一開始,作者就向你展示了如何通過采用安全編碼實踐來輕松地保護網(wǎng)站。
PHP并不難,但也不像速溶蛋糕那樣:只需加水攪拌即可。每個網(wǎng)站都是不同的,因此不可能抓取一個腳本,粘貼到一個網(wǎng)頁上,然后就期望它能正常工作。筆者的目標是幫助對編程知之甚少或一無所知的網(wǎng)頁設計師獲得深入研究代碼并根據(jù)自己的需求調(diào)整代碼的信心。
你不需要任何PHP或其他編程語言的經(jīng)驗就可以使用《PHP+7開發(fā)寶典(第4版)》;但編程技術(shù)確實在快速發(fā)展。在前幾章之后,你將開始使用相對高級的語言特性。別為理解這些語言特性花費太多時間,把它們視為一個挑戰(zhàn)!禤HP+7開發(fā)寶典(第4版)》被稱為PHP解決方案,其目的是為實際問題提供解決方案,而不是提供一系列毫無價值的練習。
你如何使用《PHP 7開發(fā)寶典(第4版)》將取決于你的經(jīng)驗水平。如果你對PHP和編程還不熟悉,請從頭開始,并逐步閱讀《PHP+7開發(fā)寶典(第4版)》!禤HP+7開發(fā)寶典(第4版)》按照一個邏輯順序進行組織,每一章都建立在前面章節(jié)的知識和技能的基礎上。在描述代碼時,筆者試圖用簡單的語言解釋它的功能。筆者避免使用行話,但使用了一些技術(shù)術(shù)語(每個新術(shù)語在第一次出現(xiàn)時都會進行簡要描述)。如果你對PHP有更多的經(jīng)驗,可以直接跳轉(zhuǎn)到感興趣的領域。雖然在沒有筆者的解釋的情況下你也能理解代碼的意義,但筆者希望呈現(xiàn)自己在使用PHP解決問題時理清思路的過程。
細小而重大的變化
這個版本的標題有一點細微的差別。我們在標題里面特意指明是PHP 7。以前的版本簡單地稱為PHP解決方案;但是《PHP+7開發(fā)寶典(第4版)》的編輯和筆者決定明確地表明,這個版本只關(guān)注PHP 7,這是目前唯一受支持的PHP版本。除了大大提高了速度之外,PHP 7的一大優(yōu)點是,它幾乎完全向后兼容PHP 5;換句話說,實際上所有在PHP 5上運行的代碼都可以無縫地切換到PHP 7的環(huán)境中。然而,反過來卻不行!禤HP+7開發(fā)寶典(第4版)》使用了許多PHP 7的新特性。因此,如果嘗試在仍然運行PHP 5的舊服務器上運行PHP 7解決方案中的代碼,你很快就會遇到問題。
由于托管公司通常升級他們提供的PHP版本的速度很慢,因此《PHP+7開發(fā)寶典(第4版)》的前幾個版本為較舊版本的PHP提供了解決方法。這一次,《PHP+7開發(fā)寶典(第4版)》沒有這樣做。對一些讀者來說,這意味著在本地測試環(huán)境中完美工作的代碼在上傳到遠程服務器上后可能會崩潰。截至2019年中期,每3臺運行PHP的Web服務器中就有兩臺以上仍在使用PHP 5,盡管所有對PHP 5的官方支持都已在2018年12月結(jié)束。甚至連PHP 7(7.0)的原始版本都不再受支持!禤HP+7開發(fā)寶典(第4版)》中的代碼是在PHP 7.3上開發(fā)的,盡管在第10章中有一個小的例外(《PHP+7開發(fā)寶典(第4版)》提供了解決方法),所有代碼都將在PHP 7.2或更高版本上運行。
PHP不像你開了多年的舊車,只要給它足夠的愛和油,就不需要更換。PHP不斷更新,不僅要添加新功能,還要修復bug和安全問題。即使你對新特性不感興趣,也應該對安全修復感興趣;ヂ(lián)網(wǎng)可能是一個瘋狂的地方,許多討厭的角色試圖在網(wǎng)站上找到可利用的漏洞!禤HP+7開發(fā)寶典(第4版)》包含了很多關(guān)于安全性的建議,但是它不能保護你免受PHP核心中發(fā)現(xiàn)的安全問題的影響。確保你的遠程服務器保持最新狀態(tài)是將風險降至最低所需的保障。因為PHP是免費的(盡管托管公司對他們的服務收費),所以不會額外增加費用。
這個版本的其他新特點
這個版本仍然沿用以前版本的結(jié)構(gòu),繼續(xù)使用相同的Japan Journey網(wǎng)站案例作為主線,因此乍一看,似乎沒有什么變化。不過,每一頁都做了修訂,目的是使描述更清楚。更重要的是,對代碼進行了廣泛的審查和更新。第9章和第10章中的Upload和ThumbnailUpload類已經(jīng)被徹底重寫,使它們更簡單、更健壯。關(guān)于使用數(shù)組有一個全新的章節(jié);關(guān)于編寫PHP腳本的章節(jié)被分成兩部分。第3章現(xiàn)在是對新用戶的PHP快速介紹,而第4章則是對初學者和更有經(jīng)驗的讀者的PHP快速參考。第4章已經(jīng)擴展了內(nèi)容以介紹PHP 7中的新特性。
有關(guān)使用MySQL或MariaDB數(shù)據(jù)庫的章節(jié)已經(jīng)過修訂,以使代碼更加安全。《PHP+7開發(fā)寶典(第4版)》還添加了一個PHP解決方案,特別說明了使用超級全局變量$_SERVER['PHP_SELF']可能出現(xiàn)的問題,并提供了一個健壯的解決方案。
使用示例文件
可掃描封底二維碼獲取《PHP+7開發(fā)寶典(第4版)》示例文件。
設置一個PHP開發(fā)環(huán)境,如第2章所述。解壓縮文件并將phpsols-4e文件夾及其所有內(nèi)容復制到Web服務器的文檔根目錄中。每章的代碼都位于以該章的編號命名的文件夾(如ch01、ch02等)中。按照每個PHP解決方案中的說明進行操作,并將相關(guān)文件復制到網(wǎng)站根目錄或指定的工作文件夾中。
如果在一章中對一個頁面進行多次修改,《PHP+7開發(fā)寶典(第4版)》會對文件的不同版本進行編號,比如index_01.php、index_02.php等。復制帶有數(shù)字的文件時,請從文件名
中刪除下畫線和數(shù)字,這樣index_01.php就變成了index.php。如果你使用的程序在將文件從一個文件夾移動到另一個文件夾時提示你更新鏈接,請不要更新它們。文件中的鏈接設計用于在目標文件夾中獲取正確的圖像和樣式表。《PHP+7開發(fā)寶典(第4版)》已經(jīng)這樣做了,因此你可以使用文件比較工具檢查你的文件與筆者的文件。
如果你沒有文件比較工具,筆者強烈建議你安裝一個。當你試圖找出你的版本和筆者的版本之間的差異時,這將節(jié)省大量時間。在幾十行代碼中,很難找到缺少分號或類型錯誤的變量。Windows用戶可從http://WinMerge.org/免費下載WinMerge。筆者使用Beyond Compare(www.scootersoftware.com),它現(xiàn)在提供Windows、macOS和Linux版本。這個工具不是免費的,但功能很強大,而且價格合理。Mac上的BBEdit包含一個文件比較工具。如果你愿意在Mac上使用終端程序,那么默認情況下會安裝diff實用程序。
David Powers已經(jīng)累計發(fā)布了三十多個關(guān)于PHP的視頻培訓課程和書籍。這些課程和書籍都非常成功。他以前是BBC電臺和電視臺的記者,在任職記者期間,花費了很大一部分時間在日本報道泡沫經(jīng)濟的興衰。他擅長用簡單且通俗易懂的語言分析復雜的問題。這種能力也體現(xiàn)在他的關(guān)于PHP和Web開發(fā)的文章中。
David最初是在20世紀90年代初作為BBC日本電視臺的編輯參與網(wǎng)絡開發(fā)。由于沒有營銷預算,他開發(fā)了一個雙語網(wǎng)站來推廣這個渠道。離開BBC以后,他繼續(xù)為一家國際咨詢公司開發(fā)雙語在線數(shù)據(jù)庫,并在英國兩所大學講授網(wǎng)絡開發(fā)課程。除了寫作和制作視頻培訓課程外,他還是北倫敦一家慈善機構(gòu)的受托人。該慈善機構(gòu)為退休人員和不再全職工作的人員提供教育設施。