《細說PHP》 第四版 樣章 第二章 PHP的應用與發展 5

  • 2019 年 10 月 5 日
  • 筆記

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/ITXDL123/article/details/99781922

2.5 如何學習PHP

PHP以其簡單易學的特點,以及敏捷開發的優勢,從一個幾乎不被人知的開源項目,慢慢成長為技術人員首選的動態Web設計工具,與其他語言相比,PHP表現得更好、更快、更簡單易學。儘管如此,我們在面對一項自己不熟悉的新技術時,仍然會感到無所適從,不知道從何處入手,似乎總是感覺摸不出一條清晰的脈絡來。另外,最大的障礙莫過於學習的過程枯燥乏味,從而失去學習興趣。不過,如果你能掌握一種適合你的學習方法,就可以事半功倍。根據筆者多年的PHP教學經驗,和眾多人才培養的成功案例,列出的學習方法或多或少地有一定的借鑒作用。當然再科學的學習方法,也只是讓你少走彎路,而不能一夜精通,還是需要持久地修鍊!

2.5.1 確定學習的目標

是什麼讓你選擇學習PHP呢? 是愛好、是為了找工作、還是工作中的開發需要?既然選擇學習PHP就一定要有堅定的信念。不能一時興起學了一陣兒,聽別人說某某語言有多麼得好,馬上切換,或是多門語言的學習同時進行。只有專心在一門課上下苦功,才能成為「專家」,持之以恆才能產生興趣,畢竟興趣才是最好的老師!

2.5.2 PHP學習線路圖

剛開始學習PHP時,多數新手都會有一些迷茫,不知道從哪裡開始學起,不了解學習的順序,找不到學習的重點。例如,有新手聽說學習PHP需要先搭建好運行環境,就按網上的資料搭建。網上好多這方面的資料,幾乎都是真實項目上線使用的專業環境,所提供的都是Linux下源程式碼包安裝方式,相當複雜,成手如果按項目功能訂製安裝都有可能要花費一兩天的時間,新手有的需要花費一兩個月時間才能了解個大概,這就是為什麼有好多新手從一開始就選擇了放棄。如果有人教你一種學慣用的集成安裝環境,可能你只需要5分鐘就可以搞定。還有新手學了好久,就是不知道如何寫項目,反覆學習基礎部分,就是停滯不前。也有的新手找不到重點,學習了大量的內容,結果實際用到的並不多,浪費好多時間。所以新手開始學習,需要有人給你指引,找到正確的方向才能大步前行。如圖2-7所示,是筆者建議的PHP新手學習線路圖。

圖2-7 PHP新手學習線路圖

按PHP學習線路圖2-7中的指引, 可以將學習PHP的過程分為4個階段,為每個階段設定一個學習目標,並安排好學習計劃, 達到目標後就可以開啟下一階段的學習。

Ø 階段一:入門

這是剛接觸PHP時的入門階段,先要了解PHP的開發能力,並多接觸一些用PHP開發過的開源項目,網上有很多開源的PHP項目可以下載,先學習一下簡單的功能操作即可,主要是能產生對PHP的學習興趣,從中了解PHP的開發需求和PHP的開發特點等。前面我們介紹了Web開發所需的構件,所以只孤立地學習PHP肯定是不行的,先學PHP也不行。如果剛開始接觸Web開發就直接學習PHP會力不從心,因為PHP是伺服器端腳本,至少要在PHP的運行環境去解析它。另外,PHP是嵌入到HTML中的腳本語言,還要了解一些常見的HTML標記等。在開始學習PHP之前先做一點準備是非常有必要的。

Ø 階段二:打基礎

這個階段是學習的重點,但方法很重要,像PHP的基本語法和語言結構(流程式控制制、函數、字元串等)這部分內容能學多細就學多細,每個知識點都會在開發中使用到。而像數組、對象、文件處理、影像處理、MySQL資料庫的操作、PHP操作資料庫等內容,先學習一些常用的部分,掌握一些基本的應用,這樣可以大大提高學習的進度。大多數新人在這個階段的學習中都會出現兩個常見的問題:第一,可能當天學習的內容,下次在學習新內容時,上次學的忘得差不多了,總是記不住。當然,這個大可不必擔心,不要停下來,一定要繼續往下學習,因為基礎的語法都是後面知識中會用到的技術,用多了自然就記住了。而像高級的部分也不用擔心記不住,都是類庫或函數庫,只要記住系統已經提供了哪些功能就好,使用時通過查詢手冊即可,能記住常用的當然更好。第二,就是書上講的內容,能看懂也都能理解,就是自己一動手時,不知從何下手,沒有思路。所以說對這個階段的知識點有所了解以後,一定要想盡辦法做出一個小項目(例如,模擬寫個小型商城、論壇或聊天室等),暫時不用去管安全、優化及程式碼品質,只要能實現功能就行。這個項目的目的就是將基礎部分的零散知識點貫穿在一起,在實際項目中去應用實踐,能更好地對其理解和掌握。

Ø 階段三:加強

有了階段二的項目開發的練習後,積累了一些開發思路,需要再回過頭深度學習每部分的知識點,如數組、對象、正則表達式、資料庫操作、數據結構和演算法等,這些內容是PHP開發中最常用的技術,這個階段的學習可以更全面、更透徹,更容易掌握。當然還要學習一些新的內容,像模板引擎和PHP框架,然後再做一個項目。這個階段的項目就不能像階段二時的項目,只是實現基本功能就行了,不僅要求程式碼品質要好,業務邏輯要清晰,項目的結構也要基於目前最流利的開發模式,使用框架和模板引擎,並採用面向對象的思想和MVC模式的設計要求,還要學習項目的開發流程和規範,盡量讓這個項目達到真實上線的項目標準。

Ø 階段四:提高

這個階段建議在工作中去學習, 因為這個階段的內容沒有統一的標準,需要根據實際項目去設計解決方案。當然多收集和學習一些這方面的理論,或模擬場景做一些有關的實驗是很有必要的。以上四個階段,看似簡單,卻也需要我們全身心投入,持之以恆才行。

2.5.3 堅持動手實驗

打過籃球的朋友都知道投籃理論可以掌握的很快,但要提高實際的命中率,就需要反覆練習了。學編程也是一樣的,能看懂的程式碼,可不一定能寫出來,多動手練習是非常有必要的,可能剛接觸時,寫了幾行程式碼就會出現N個錯誤,出現的錯誤就是你沒有掌握的技術,解決掉的問題就是你學到的知識,當錯誤出現的越來越少時,你編寫程式碼的能力也就越來越熟練。當然,為了能更快地解決程式碼錯誤,初期可以寫幾行程式碼就運行一下,這樣方便定位查找Bug的位置。另外,編寫程式碼是對理論進行實踐的最好方法,你認為比較迷茫的技術,都可以通過實驗解釋通過。還有,在練習時一定要邊練習邊為程式碼加上注釋或記錄學習筆記進行總結和分析。

作為編程過來人,筆者剛開始學習編程時同樣沒有思路,至少也是照貓畫虎寫上萬行程式碼,才慢慢出現思路的。多動手跟著書上的例子或配套的教學影片開始練習,當然最好加一些自己的功能,按自己的思路敲上一些程式碼,收穫會大得多。提醒一句,要理解程式碼思路之後再跟著敲,背著敲,千萬不要左邊擺著別人的程式,右邊自己一個一個子母地照著寫。

2.5.4 Bug解決之道

不管是新手學習,還是成手程式設計師,寫程式就會遇到Bug。那麼,自學時遇到Bug之後,環境配不通,程式調不出來,運行不正常,遇見這些惱人的問題時,該怎麼辦呢?首先我要恭喜你,遇見問題,意味著你又有長經驗的機會了,每解決了一個問題,你的PHP經驗值就應該上升幾百點,問題遇到的越多,知識提升的就越快。

但是總是解決不了Bug也是很惱人的,怎麼辦呢? 筆者的建議是當你遇到一個問題時:首先要仔細地觀察錯誤的現象。有不少新人的手非常快,訪問頁面報了一大堆的錯誤,掃了一眼之後就開始盯著程式碼一行一行地找,看清什麼錯誤了嗎?沒有!還有出現Bug馬上網上求救,自己都沒看一下,這都是典型的不上心的方法!請記住,學習編程並不是一件很容易的事情,自己首先要重視,要用心才可以。別人幫你解決的問題可不是你的提高,最少也要自己嘗試著去解決,真的沒有思路了,可就別浪費時間了,再花多少時間也解決不了,這時就該想別的辦法了。在開發過程中,仔細觀察出錯資訊,或者運行不正常的資訊,是你要做的第一件事。如果錯誤資訊讀懂了,就要仔細思考問題會出在哪個環節了;如果沒讀懂,又要怎麼辦呢? 讀了個大概,有些思路但是不太能確定,也要如何處理呢?

Ø 要仔細思考問題會出在哪些環節上

程式是一系列語句完成後產生的結果。當你讀懂了一個問題之後,要好好地思考這個問題可能會在哪些環節上出錯。例如,客戶端產生數據→按「提交」按鈕→發送到伺服器→伺服器接收到後保存到資料庫。這幾個環節都有可能會出錯:有可能客戶端根本就沒產生數據、提交按鈕按下去後根本就沒發出去、發出去的不是你產生的東西、根本就沒連接網路、發送出去伺服器沒有接收到,或者接收到的資訊沒保存到資料庫等。仔細地分析程式的環節和這些環節可能產生的問題,你的經驗值自然會大幅度提升。在網頁A輸入了一個人的名字,提交到B,首先存儲到資料庫,然後再讀出來,發現亂碼!怎麼辦?當然是分析環節:客戶輸入→HTTP發送→B接收→存儲到資料庫→讀出→展現到網頁。每個環節都可能出問題,怎麼才能知道哪裡出的問題?繼續往下讀。

Ø 如何定位錯誤

寫程式碼時常見的Bug有兩大類:一類是語法錯誤,例如沒寫結束的分號,訪問時頁面中就會提示哪裡出錯,列印出錯誤報告,只要認真讀完錯誤報告,這樣的問題很容易找到,也很好解決。另一類是編寫的邏輯錯誤,這是因為設計缺陷或是開發思路混亂造成的,要定位這樣的錯誤會麻煩一些,分析清楚有哪些環節之後,通常有三種方法找到錯誤位置:第一種是輸出調試法,通過在多個可疑的位置列印輸出不同的字元串,通過觀察輸出的結果,並結合輸出資訊的位置周圍的程式碼來確認錯誤的位置。第二種是注釋調試法,先將所有程式碼注釋掉,再從上到下一點一點去掉注釋,去掉一次注釋運行一下,觀察運行的結果,如果有不正常的結果出現,也就是定位到了錯誤的位置。第三種是刪除調試法,先將程式碼備份,然後刪掉一部分調試一部分,也就是去掉一部分功能來做簡化,然後調試剩下的功能。如果還查不出來,恭喜你,你遇到的錯誤是值得認真對待的錯誤,是會影響你學習生涯的錯誤,就使用搜索引擎吧。 也可以在專業的BBS中詳細列出問題,或加入一些QQ群尋求指導。

2.5.5 看教學影片,讓學習變得簡單

跟著教學影片學習是很好的學習方式,既有詳細的理論講解又有程式碼分析,看書和配套影片結合學習可以達到最佳的效果。目前,網上可以免費學習的技術影片越來越多,像兄弟連雲課堂(yun.itxdl.cn),不僅影片種類多、影片新、講解全面詳細,而且又會根據企業實際的技術應用,不斷更新,不僅可以記錄學習筆記,還有專業老師在線指導答疑,也可以和同學互動。 找到比較適合你的全套影片,保存在硬碟里即可。

2.5.6 優秀的Web程式設計師是怎樣練成的

學習軟體開發「思維邏輯」是核心,「記憶」只是輔助。每個行業都有新手和成手之分,軟體開發也是一樣,分為普通程式設計師和高級軟體工程師等不同級別的職位。從初級程式設計師成長為高手並不是一步到位的,而需要通過不間段的努力逐漸成長起來。例如,在工作中不斷積累經驗,掌握複雜網站的架構設計,並具有解決問題的能力,還要多研發產品,並能挑戰高難度的項目。除了要有強烈的好奇心和學習精神以外,筆者還總結以下幾點提供給剛入行的新手參考。

1. 克服慣性

萬事開頭難,克服慣性是學習新技術的第一步。有很多的小技巧可以調動我們的積極性,幫助我們克服慣性。對於筆者來說,微習慣是一個很好用的小技巧。與其被手頭的任務嚇到,不如將任務細分為一個個具體的微任務,然後挑選其中的一個開始做起。通過完成一個個的微任務,你會發現自己克服了慣性,任務不再顯得難以完成。關鍵就是將大塊任務細分為微任務。

2.具備紮實的技術功底

PHP是眾多電腦開發語言中最容易入門並上手最快的開發語言。但如果不了解數據結構、離散數學、編譯原理、電腦網路、結合多種語言的編程特點等這些電腦科學的基礎知識,很難寫出高水準的程式。當你發現寫到一定程度很難再提高的時候,就應該想想是不是要回過頭來學學這些最基本的理論。因此,多讀一些電腦基礎理論方面的書籍是非常有必要的。

3.遵循良好的編碼規範

高品質的程式碼都具有統一的編碼規範,要養成良好的編碼習慣,程式碼的縮排編排、變數的命名規則要始終保持一致。因為在一致的環境下,團隊協作中會有更高的效率,團隊的成員可以減少犯錯的機會。程式設計師還可以方便地了解其他人的程式碼,弄清程式的狀況,就和看自己的程式碼一樣。另外,也可以防止剛接觸PHP的新人自創一套風格並養成終生的習慣,一次次地犯同樣的錯誤。

4.遇到問題要解決不要逃避

學習過程中遇到比較難理解的重要章節不要跳過,更不能放棄,要多花一些時間和精力在這些知識點上,將其攻破,這樣才能不斷地提高。解決過的問題再次遇到時將不再是你的障礙。

5.擴充自己的想像力

程式設計師不要局限於固定的思考方式,遇到問題時要多想幾種解決問題的方案,可以試試別人從沒想過的方法。豐富的想像力建立在豐富的知識的基礎上,除電腦之外,多涉及其他的學科,比如天文、物理、數學等。

6.對新技術的渴求

我們可以越來越方便地獲得大量學習資源。這些資源的傳播載體由最初的教室變成了部落格、技術論壇等。

7.挖掘設計模式,提高程式碼品質

動手將一個新的模組開發出來後,不要認為自己編寫的程式碼就是完美的,也不要草率地將別人的程式碼拿過來就直接使用,更不要在開發過程中多次遇到相同的功能,將同一段程式碼直接粘貼反覆使用。提高自己的編碼能力一定要多參考和總結別人的設計模式,還要不斷地改進和升級才能提高自己編寫程式碼的品質,也能從中學到新的技術。

8.多與高手交流

盡量多認識一些大型互聯網公司的程式高手,多了解一些大型網站的解決方案。要多上網,看看別人對同一問題的看法,會給你很大的啟發。也要經常參加一些互聯網技術大會,了解一些新技術和行業的發展,拓展自己的眼界。它可以是任何你有激情去學,並且想深入學習的一些東西。這種原始的學習慾望非常重要,這種慾望可以在你的學習低潮期給你提供動力。你想學的或許是一門新的程式語言、應用框架或者是新的工具,一旦你確定了想要的是什麼,就立刻去收集相應的優秀群體所做的一些優質的工作成果。

9.韌性和毅力

程式高手們並不是什麼天才,而是在無數個日夜中磨鍊出來的,成功能給我們帶來無比的喜悅,但程式卻是無比的枯燥乏味。做程式設計師,停滯不前就是落後,要不斷地學習擴展新知識,就像軟體版本升級一樣,也要不斷地更新自己的技術。

10.寫部落格

在技術領域,部落格是最簡單易得的表達載體。當你準備落筆的時候,你會強迫自己整理思路,並且對積累下來的零散的知識片段進行結構梳理。說不定,通過互聯網的分享,你的經歷和分享會給別人的成長帶來幫助。寫部落格能夠提升你的個人溝通能力,這與你學到的技術同樣重要。

11.考慮接單

許多程式設計師正不斷地尋找新的項目和解決不同的問題,以此來增加經驗。然而,很少有一個單一的環境能夠提供這樣的條件。如果基於遺留系統程式碼(維護原有系統),架構方面沒有多大的想像空間。因此,許多程式設計師覺得需要變換工作,到不同的環境去獲取新一階段的學習。然而,「跳槽」只不過是獲取豐富經驗的途徑之一,筆者提議另一個選擇——接單。

2.6 小結

本章必須掌握的知識點

Ø PHP是什麼,可以用來開發哪些類型的應用。

Ø PHP的開發優勢。

Ø 如何學習PHP。

本章需要了解的內容

Ø PHP的誕生與發展。