自學 PHP,如何不走彎路?

大學畢業一年,現在想學 PHP,但是沒有基礎,看了半月的 html div+CSS,感覺還行,就是複雜的頁面布局比較模糊,求高人指點下該如何學習不走彎路,謝謝!


彎路都有哪些,我列舉下你可以對照著看看

  1. 資料庫查詢用字元串拼接。正常的做法是用ORM進行封裝
  2. 分不清PHP和JavaScript各自都幹啥。這個真無解,你得好好了解啥是客戶端腳本啥是服務端腳本
  3. 以為PHP是最牛逼的語言。千萬別這麼認為
  4. 以為web開發里PHP是最牛逼的語言。同上條,千萬別這麼認為
  5. 以為會資料庫查詢、會PHP讀取數據展示就認為會寫網站了。這個水平只能寫個個人主頁
  6. 搞不清session是啥。好好學習HTTP協議

想到再補充吧。


我也是自學php,而且是非計算機專業,算半路出家的。(工作了一段時間又自學編程)

1.一本好書至關重要。如果這本書的知識非常深入,那麼還是不要看了。對初學者來說只能是打擊。因為很多東西都看不懂。一本知識較為淺顯,並且說明非常詳細,但是能讓你上手的基礎知識又非常完善的書籍就非常好。(推薦php紅寶書)

2.理順學習流程。php本身的實踐重點是web。以後深入了可以用作其他用處。而寫出一個能看的web必然與html和css密切關聯。所以,首先,了解html+css+js的知識是非常重要的。(很多中小公司html+css+js+php都是一個人完成。沒有詳細的分工。)這樣對學習的積極性也會有幫助。其次,要掌握伺服器環境的配置,不然只能寫寫靜態頁面了。再次就是sql語言的學習。

3.了解程序原理,程序的語法永遠都是次要的。重要的還是原理,知道程序是怎麼工作的遠遠比程序是怎麼寫的要重要的多。(數據結構+演算法=程序)

4.項目實踐,有了理論,那麼就是實踐了,只有通過實踐才能知道自己哪裡有不足,改掉了不足,自己的水平自然就提高了。(從最簡單的hello world,到創建自己的框架)

5.進階。計算機的世界每天都在不斷更新。想要讓自己不掉隊,那麼就要不斷的學習新知識。寫博客,記錄自己解決問題的方法和過程。看高手的博客,不斷充實自己的知識和技術細節。邁向php語言的底層。讓自己掌握更多的c/c++的知識,如果有可能也看一看java的知識。還有操作系統。你會發現其實php原來只是浮雲啊。

6.關於視頻教程,這個東西仁者見仁,對我個人而言我是比較喜歡看視頻的,因為非常直接,別人怎麼做的一目了然。但是這個東西也有壞處,如果講課的人講不到這個知識點那麼可能自己也就不去注意了。還有就是,很容易受講課人的影響,形成某種編程和思考習慣。(個人認為形成自己的編程和思考習慣是非常重要的)


彎路是不可避免的。
了解網站的運行原理,懂得一次請求都發生了什麼。
http協議htmlcssjslinuxapachemysql...
學php不僅是學一門語言。

另推薦Codeigniter 和Bootstrap


為什麼害怕彎路,我們的每一次成長不都是從掉到坑裡爬起來而獲得的么?
如果你沒見過糟糕的代碼,又怎麼會了解到好代碼的可貴?如果你沒經歷過架構設計的失敗,怎麼對比好架構的難得。


邀請我回答這個,幾天前已經回答過一個類似問題 自學PHP有哪些書籍和教程值得推薦? - Summer 的回答 - 知乎。

為方便查閱,下面貼出來。

我在整理這份方案時,也是為了讓新手少走彎路,提高學習效率,把更多的時間放到項目練習上,同學們可以參考下。

作者:Summer
鏈接:自學PHP有哪些書籍和教程值得推薦? - Summer 的回答 - 知乎
來源:知乎
著作權歸作者所有,轉載請聯繫作者獲得授權。

剛給一位親戚整理了一份關於 Web 開發學習的方案,他也是想成為 PHP 攻城獅,所以這裡也貼一下給他的學習路線和思路。

網路上教程太多,五花八門,為他總結這份方案的目的,在於最高效的學習。真的不需要看 100 個 PHP 基礎課程或者書籍來學習 「PHP Web 開發」。「PHP Web 開發」是技能,只需要看剛剛需要的知識,然後做項目練習,在練習中成長。這個方案,也兼顧了 @countryRoad 同學提到的,**保護學習的樂趣**,找到舒適感,獲取成就感,在積極的過程中學習是最高效。

PHP 無法單獨學,因為是 Web 開發的專屬語言,需要整套的 Web 開發知識。Web 最基本的學習可以從 HTML+CSS 開始。第一步是學習一下下面這個交互課程:

HTML+CSS基礎課程-慕課網

交互課程的好處是可以實時反饋,並且一開始不需要為開發環境的事情擔憂,直接上手。注意上面那個課程不要求完全學會,過一遍即可,不懂的東西先記起來,然後跳過,後面再不斷 Review ,不要妄想一下子學會全部。編程是 「技能」多一點,重在練習,這裡我們只求知道個大概,以方便後面其他課程的繼續。

接下來就是 PHP 基礎和進階課程了:

PHP入門篇_PHP入門視頻教程-慕課網
PHP進階篇_php視頻教程-慕課網

還是跟學習 HTML 一樣,過一遍即可,我們的目的只求知道個大概,以方便後面其他課程的繼續,不懂得東西後面等我們慢慢上手,找到舒適感了,再逐個擊破。

有了上面的基礎知識,接下來可以開始學習實戰課程了。這是最重要的一步,一個 PHP 工程師的能力,完全是靠項目累積出來的。我們經常笑稱為「打怪升級」,從第一個項目開始,每做多一個項目,能力值和經驗值就會增加。

一個概念要放在腦子裡面,這是很多人一路學過來經常猜的坑,那就是:不要看太多書或者文檔,要動手做,你真正的 PHP 學習是從你開發第一個項目開始。

因為編程是一門技能,你看再多的書,最多只是知識,知識和技能是有區別的。就如你可以預想到的,一個人看了三個月 NBA 籃球視頻,期間連球都沒摸到,到了球場肯定還是不會打球。他真正的籃球學習,從他開始動手的那一刻起。

PHP 的學習,可以歸納為三個類型:

  1. 語言的基礎語法學習,這些是 ifelse, while, switch, class, function, trait 等;
  2. 內置函數/類學習,這些是 array 的操作,string 的操作,cookie 等;
  3. 應用學習,這些是隊列、計劃任務、註冊登錄、緩存、郵件、分頁、許可權管理、ORM等;

第一和第二,入門是上面提到的慕課網的交互課程,進修是在 PHP: PHP 手冊 - Manual 裡面。所以後面隨著學習的深入,文檔要多看,有個心理準備,作為一位 PHP 高級工程師,文檔基本上得過 5 ~ 10 遍。

第三部分的學習,可以藉助一個優秀的框架來學習,站在巨人的肩膀上。跟著框架學習的好處在於你能確保走在一條正確的路徑上,框架解決的是實現生產環境中遇到的通用問題,所以基本上框架學習涉及的話題,那都是 PHP 開發中經常會面對的問題,並且你學習到的是解決方案。

學習框架提供的每一個功能,並且在學習的時候問下面幾個問題:

  • 這個功能為什麼會出現?解決了什麼問題?
  • 這個功能通用性有多強?為什麼會被放到框架裡面?
  • 這個功能在設計上有哪些優於其他框架的地方?

PHP 框架首推 Laravel ,原因見這裡: 最好的 PHP 框架是什麼?為什麼?。

Laravel 學習資料,入門先看這個《Laravel 入門教程》 ,這本書是我專為 PHP/Laravel/Web 初學者定製的,也是我的公司 「優帆遠揚」 http://estgroupe.com/ 的工程師必修課。

此書將教你如何使用 Laravel 一步一步構建一個類似新浪微博的應用,註冊、登錄、授權、ORM 使用等,甚至是從 0 到部署。讓你從實際開發中體會到 Laravel 開發的敏捷、愉悅與輕鬆。

書中涉及到 HTML、CSS、JavaScript、PHP 和 Laravel 等 Web 開發相關的基礎知識。不僅於此,還會對這些基礎知識點進行延伸擴展,為你講解一些在 Web 開發中更為專業、實用的技能,如 Git 工作流、Gulp 前端工作流、Bootstrap 框架基本使用,上線部署代碼等。這些知識將為你未來的編程開發奠定下堅實的基礎。

此書的線索性很強,我們故意這樣設計,讓讀者能跟著線索練習下去。這裡的要求是,跟著此書做 5 遍。

學完此書,有了第一個項目經驗。就可以開始閱讀 Laravel 的文檔 https://laravel-china.org/docs/home ,嘗試著去理解文檔中涉及的話題。

遇到問題可以到 Laravel China 開發者社區 裡面找答案,或者提問題,提問題時注意看下 社區發帖和管理規範 。

Laravel China 開發者社區 這個是國內現在最靠譜的 PHP/Laravel 社區,還算是蠻有技術氛圍的,至少我們一班管理員都是一直以這個為目標在努力。

後面的學習就是不斷的看 PHP 手冊 + Laravel 文檔 + 做自己的項目,或者公司項目。

還是要強調一下,DO IT 、DO IT 、DO IT 。動手練習是編程的唯一學習方法。

Summer


  1. 哦,PHP不是簡單的html+css,這是前端的事情。
  2. 別看了,如果可以盡量找個培養新人的公司,先進去開始coding吧。
  3. 沒有編碼1萬行,談什麼都是空的。
  4. 多google吧,如果還有百度,你就一直得屌下去了。
  5. 學會用stackoverflow
  6. 學會用github
  7. 開始把編程作為一種樂趣吧

首先:div+css說法本身就是錯誤的。正確的應該是(X)HTML+CSS

回答:不走彎路是不可能的。
但可以少走彎路,去http://php100.com http://phpchina.com http://lampbrother.net 這些網站或論壇逛逛。
看別人怎麼做的。跟著學。


多看書,多寫代碼,無他。如果在校生那就多看書。
回想我的 PHP 學習過程,我至少看過,3 本PHP相關的編程書籍,1 本web開發書籍,2 本JS書籍,1 本HTTP權威指南,1 本CSS權威指南,2 本設計模式,2 本MySQL, 3 本Linux相關,後期還看過 PHP 擴展開發的書籍,但是覺得太無聊了,沒看下去。每次看這些書都感覺特別有收穫,很有必要。另外,還需要多看開源代碼,我通讀過至少 3 種 PHP 框架的源碼。目前 PHP 編程能力不敢說精通,但至少是相當熟悉。
最近在學 erlang,準備先看完 2 本 erlang編程指南再說,很喜歡 erlang, 原來編碼還可以那樣子來。
另外,本人不推薦通過視頻來學習,曾經在校時,覺得看書沒意思,看了十幾集視頻,就是那種從頭到尾教你怎麼寫一個CMS的那種,感覺效率不是太高。還有我發現之所以要看視頻來學習完全是因為自己懶,懶得看書,而不看書不學習會感覺愧疚,於是就想看視頻。
推薦一個叫 Slim 的小巧框架,感覺設計不錯,適合移動app後端開發。

更新一下:
強烈反對上面有人說看書不如看官網文檔的,我想請教一下,看官網文檔怎麼看,就對著一個個函數看怎麼使用嗎,太無聊了吧,耗時且效率低。一般我們說查閱文檔,是指當遇到一個概念或者一個函數或者一個類的使用方法不太了解,想去深入查證一下,這個時候才是需要看文檔的時候。而不是通過閱讀文檔來學習編程!


這麼多同學都在分享自己學習的經歷,我也忍不住說說自己是怎麼入門的,如有不同的觀點請輕噴!

1)單純的學PHP肯定不行,這裡不僅僅局限於PHP,前端也要涉及,例如div+css+js,不是說要精通,但是一定要熟悉了解,至少對於JS這塊jquery的熟練運用是一定要有的。還有伺服器方面,apache,nginx神馬的!
想當初我前端和PHP一起學習的時候,自己寫了一個webQQ(大三自己一個人),界面,通信方面都是自己實現的,花了我三個月,不過當時沒有考慮到大數據以及性能的問題,所以干程序這行一定要有鑽研精神。
下面這個就是我寫的webQQ,獻醜:

2)要說怎麼學PHP,有人說視頻,有人說看書,其實都是很好的選擇,我個人開始學習的時候是看視頻,畢竟大多的視頻教程都是入門級的,到後面視頻的教程滿足不了你的時候,你就可以去看看一些有深度的書籍了,實踐出真知。
3)Linux環境下的開發是必不可少的。要學習Linux,鳥哥的linux私房菜的書籍,肯定是要看過的啦!等真正會用linux的時候,你就明白linux有多有趣了!尤其是在操作命令不需要滑鼠的時候,別提多爽了!
4)資料庫,不用說肯定是mysql最熟悉了,curd操作,查詢優化這個是最基本的了解和掌握。

tip:關於有人說php源碼的問題,我剛開始學的時候,有些人會建議我去讀php的源代碼,對於這一點我當時真的去讀了,但是結果顯而易見,你讀不懂,也許你學過C(我本身是學軟體工程),但是如果沒有一些架構,技術鑽研的沉澱,你還是看不懂,而且你想想全中國那麼多PHP的工程師,能有幾個是看完PHP源碼的呢?就算是新浪微博的那個惠新宸也許也沒看完,做什麼事情不要鑽牛角尖為好!

對於後面的深入學習我也在自己探索,就不班門弄斧了!


PHP語言入門不難,我大三的時候自學基本一個星期可以入門。
你想要不走彎路,建議看書+多練習。
其實不用想著不走彎路,不去走怎麼知道那一條是彎路。
只有走過了彎路,才能看到別人看不到風景,才能學會別人不知道的東西。
學會用是很容易,入門後可以看下 thinkphp這個框架。挺好用也挺多人用的。
祝你自學成才~


第一眼看成了自學PHD,把我嚇一跳


基本語法
編碼技巧,編碼規範
各類函數
各類PHP模塊
學習一款cms或二次開發
了解PDO,ADO、數據驅動層、順路去學下mysql
報錯機制
面向對象
使用一款框架幫助開發
魔術方法
設計模式
反射
動手寫各類工具類、驅動。
自己寫一款小框架(說實話,你沒這麼多精力去寫的,要面面俱到,了解很多泛面知識)
你已經是個中高級程序員了。

開始折騰PHP的運行原理和內核機制吧
試著寫一些php的C擴展幫助你的項目

這個時候,就強烈建議你去學一門強類型語言如JAVA。
對比不同和優缺點。

著手了解伺服器方面吧


笑死人,你這不是已經彎了么。學php 你整那些前端的幹啥,最簡單的辦法,自己寫個mvc框架,就都熟悉了


推薦個集成開發環境phpstorm, 蠻好的


彎路未嘗沒有好風景


可以看看韓順平的PHP視頻


學php跟學書上內容一樣,學了你最好不能忘.

1.php基本語法,類操作
2.mysql操作,php對mysql的操作
3.html/css/javascript,不求精通,只求熟悉
4.邏輯和顯示分離,include載入html骨架的顯示文件(v),include載入mysql的操作文件(m),控制需要顯示的數據以及各種邏輯(c),並在html文件中做數據展示 echo
5.熟悉php的oop編程
6.了解MVC架構,了解模版引擎 如smarty
7.學習php框架,如TP3.2.3
8.用框架在本地建站
9.學習linux基礎操作
10.學習lamp的搭建,配置
11.上傳項目代碼
12.修行靠個人...


先學們強類型的語言,再去學弱類型的語言!

剛開始就學 PHP ,會弄的你的基本編程思想都建立不起來。:)


在你學習PHP的時候,你要適當的學習:

  1. HTTP協議

當然如果資金和時間比較充裕的話,我是建議你去培訓班學習一下的、國內挺出名的php培訓也有好多,你可以查一下。
如果你真是想靠自己的實力來學習的話,我建議你去一些php培訓的網站上,他們的網站上都有詳細的培訓課程體系,你可以按照他們的體系安排來學習,這樣也不錯。


推薦閱讀:

有朋友還在用飯否嗎?
你覺得你能離開互聯網多長時間?
為什麼做 IT 互聯網的人都睡那麼晚?
如何利用網上的聊天室賺錢?
如何看待人民日報微博上線?

TAG:Web開發 | 互聯網 | PHP | PHP學習 | PHP入門 |