第一php網 ? Blog Archive ? 初學者如何學習php的具體技術

段時間,站長就網路上很多學習php的新手朋友遇到的問題,談了一下自己2年多年學習php的經驗。但是,這主要是從大方向上談的,對於php學習的具體細節,涉及較少。

近來,站長又發現,很多新手朋友在糾結於php的具體技術,不知該如何學習。針對這一點,本人不揣淺陋,想就自己的學習經驗跟大家一起探討,希望能夠幫到這些朋友,如果閱讀本文能使你豁然開朗,那將是站長最大的榮耀。當然,如果你對php大的學習過程還沒有一個把握,我建議你先閱讀站長之前的文章-2年多年學習php的經驗。

一、語法

毫無疑問,幾乎所有的語言的學習,不管是人類語言還是計算機語言,都是從語法開始的,php自然也不例外。對於有過其他編程語言學習經驗的人來說,尤其是有C語言學習經驗的人,php的語法應該是不難,甚至可以說很簡單的。然而,簡單不代表你一開始就能無障礙的使用,尤其是那些在工作中不經常使用到的語法,或者是那些由於個人某些特定原因,讓你感到難以接受的語法。相信我,即便是最熟練的程序員,不論語種,都有忘卻語法的時候,就像你日常說話也可能出現語病一樣。所以,如果你在學習或者工作中,發現你記不住某個語法,那麼千萬不要沮喪。

記住語法的最好方法當然是多寫代碼,寫完之後運行,對照運行結果理解語法的含義。如果你以前沒有學習過任何編程語言,你可能需要多花點時間,像記英語單詞一樣來記憶語法,當然這不是必須的。

二、模板引擎

smarty作為一個傑出的模板引擎,能夠很好的分離php腳本和html標籤,通常它是很多php程序員最先學習到的模板引擎之一,站長就是。然而,大多數人都學習使用,並不代表你也必須跟他們一樣,拋開自身的學習興趣,你的學習目標首先應該是迎合企業需求【這句話對下面將要談到的幾點也適合】。你應該經常查看各大招聘網站的招聘信息對php程序員的要求,然後總結各家招聘單位共同要求的技術有哪些,接下來有針對的進行學習。然而,站長還要無奈的說一句,儘管可觀理性的說,你確實不需要跟所有人一樣,但是為了應付那些挑剔,有時候甚至是無知的,招聘單位,你所掌握的技術越多越好,學習更多技術的原因通常是你在迎合招聘單位的同時還有自己的興趣。

三、面向對象的學習

面向對象思想【簡稱OOP思想】,現在仍然是一種流行的編程思想。對於大多數初學者來說,理解類與對象的語法不難,但是要想理解如何運用面向對象的編程思想,則要花點時間。最容易理解的當然是繼承、代碼重用,然而封裝自己的函數也可以實現代碼重用,那麼為什麼要採用面向對象編程呢?這裡要講到的一點就是代碼的組織呢。在一個專業開發團隊中,實際編程人員通常可以分為架構師、核心程序員、底層程序員,如果我們想要這三類人員同時獨立的在同一個項目上工作而沒有相關性,怎麼辦呢?這裡的沒有相關性主要是指他們編寫的都是不同的php文件,但是當他們完成工作,這些不同的php文件卻能夠互相配合執行,並且不同職位的程序員對不同php文件的操作許可權也不同。這樣的話,我們就需要通過面向對象編程思想來組織,可以通過抽象類也可以通過介面,具體這方面的細節可以用一本書來講授,站長只簡單介紹一下。比如:架構師負責定義抽象類並實現類與類之間訪問與傳遞、核心程序員負責實現抽象類中定義的具體方法即代碼封裝、底層程序員負責具體的業務邏輯並調用由核心程序員封裝的代碼來實現具體功能,而且這一過程是同時進行的,可能架構師的抽象類定義還沒有全部完成,但是核心程序員就已經封裝完了所有的代碼,也可能底層程序員調用的方法核心程序員還沒有封裝好,但是這樣沒有關係,因為在一個團隊中,架構師知道他需要定義哪些介面類,核心程序員知道他需要實現那些具體方法,底層程序員知道可以調用哪些方法,即便核心程序員還沒有實現它,底層程序員仍然可以在代碼中寫該方法,因為他知道,這個方法遲早會實現。如此一來,一個團隊的各個角色就可以各司其職,同時工作,底層程序員不需要等核心程序員封裝完所有的方法再開始編寫具體邏輯,核心程序員也不需要等架構師定義完所有的抽象類再封裝具體代碼,只要根據確定的開發文檔,完成自己的工作就行。

當然,作為一名初學者你可能一時無法接受,不要緊,不妨先使用一種面向對象的框架來加深OOP思想的理解。

四、框架

不少php初學者最先接觸到的php開發框架是thinkphp,不僅僅因為它入門簡單,更重要的是它是國產框架,中文資料豐富。對於使用框架,站長並不感冒,但它的確是php程序員必須掌握的。首先必須明確一點,框架通常是為那些功能較多、較複雜,需要很多人協同完成編碼工作的網站項目準備的,如果你想要進入專業的公司,跟團隊一起開發,那麼你最好掌握一款框架。其次,由於框架主要服務於比較複雜的項目,因此通常的框架都封裝有豐富的類庫以方便程序員使用,提高開發效率。一個顯而易見的問題就是,你可能能夠熟練的使用框架提供的的某個功能【通過底層php語言】,但是你自己卻不知道如何實現它,久而久之就可能會形成對框架的依賴而忽略對php本身技術的學習和鑽研。最後,選擇一種適合自己的框架是很重要的,當然你應該優先學習企業要求你使用的框架,這裡站長推薦大家學習codeigniter、zendframework這兩個框架,前者上手快,後者功能強大,但是起點稍高,不過很多公司都用。

站長要說的是,一定要掌握一種框架,但是同時也不要忘記對php底層技術的學習。

5、資料庫

如果你不曾在大中專院校的計算機相關專業學習過,那麼你可能沒有資料庫方面的基礎知識,但是這不可能成為阻礙你在php之路上前進的絆腳石。php最常搭配使用的資料庫是mysql,幸運的是它的語法也容易學習,你最先掌握的肯定的基本的增刪改查語句、接著是如何進行多表聯合查詢、如何在sql語句中使用mysql再帶的函數等,相信我,一旦你碰到具體問題,這將是一個非常快速的過程。學習技術,現學現用是常有的事,勤用搜索引擎,可以加快你的學習速度、提供學習效率,mysql跟php一樣有學習手冊,去官網下載一個電子文檔,經常查看它。

6、二次開發

現在很多公司都喜歡用一款開源產品進行二次開發,這樣做的好處是可以節約開發成本與技術成本,這也是唯一的好處,對公司而言。而對一名php程序員來說,二次開發是否有利於自身則取決於具體的工作任務。一些公司只是改改模板標籤、對底層進行增刪改查等操作,如果你是做這些,那麼很不幸,二次開發對你的php技術幾乎沒有任何幫助,當然或許你可以從中學會一些sql查詢的技巧。然而對技術提高沒有幫助,不代表對你其他方面沒有好處,如果你對某種開源產品很熟悉,那麼你也許可能通過幫助別人做一些私人項目來賺錢。總的來說,二次開發就是這麼些好處,原因是顯而易見的,有實力的公司不會花大力氣和精力去修改別人的代碼,他們會自己開發一個。所以二次開發,更多的是借鑒,前提是你能夠借鑒得到。

很明顯,站長很排斥二次開發。

今天又寫了這麼多跟大家嘮叨php的一些具體細節,限於站長的水平,講得既不詳盡又不夠全面,但是我覺得這是很多初學者都面臨的問題,很多老鳥都面臨過的問題。作為一隻從事php編程將近3年的老鳥,我真的希望自己的一點經驗能夠幫助菜鳥們快速成長為老鳥,甚至是大牛。如果你真的成了大牛,可千萬別忘了我這隻老鳥啊~~o(∩_∩)o 哈哈!!


推薦閱讀:

初學者眉毛如何修?
從零基礎學UG 初學者必備40條技巧
山水初學者雜談之一 筆墨紙硯的選擇
舞林秘訣?獻給初學者
瑜伽路上 · 練瑜伽,初學者如何做輪式?這樣做 So easy……

TAG:學習 | 技術 | 學者 | 初學者 | 初學 | Blog |