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