新手如何學(xué)習(xí)PHP
從自己向別人問(wèn)怎么學(xué)PHP開始,到后來(lái)不少人又來(lái)問(wèn)怎么學(xué)PHP,不管是新手,還是老鳥,似乎總是感覺摸不出一條清晰的脈絡(luò)來(lái),不過(guò),既然學(xué)會(huì)了PHP,那么我走的這條路或多或少的有一定借鑒性。
PHP的背景恐怕就不用贅言了,我相信大家選擇一種語(yǔ)言,并不是看它的背景和悠久歷史,更重要的是看它的實(shí)用性,華而不實(shí)的語(yǔ)言哪怕是再輝煌的歷史,也畢將步向沒(méi)落,可喜的是PHP經(jīng)受住了考驗(yàn),也因此,它確實(shí)是一種值得學(xué)習(xí)的語(yǔ)言。
一直是聽從別人的經(jīng)驗(yàn)長(zhǎng)大的,也因此在前輩們的經(jīng)驗(yàn)里讓少走了許多的彎路,更快的步入了正規(guī),在此向那些我至盡不知道其名字的前輩們道聲謝謝,在的眼里,幫助不分大小,只要是幫助,總會(huì)讓的心里暖融融的,我想,前輩們幫助我,并不是為了得到我的一句謝謝,更多的是出于一種責(zé)任感和對(duì)的期望,所以我想,只有學(xué)好PHP,才能對(duì)得起前輩們的汗水。
正如我所說(shuō)的,也終于感覺到了一種責(zé)任感,不知道自己的經(jīng)驗(yàn)到底能幫助新手多少,但是明白,現(xiàn)在到了履行責(zé)任的時(shí)候了,我有必要把自己的經(jīng)驗(yàn)告訴給所有希望學(xué)好PHP的人,只有這樣才能讓中國(guó)的PHP不斷的進(jìn)步,不斷的發(fā)展,在世界上占據(jù)一席之地。
學(xué)習(xí)PHP的這段期間,感覺國(guó)內(nèi)的PHP環(huán)境越來(lái)越成熟,規(guī)范也在逐漸的健全,PHPCHINA的成立,標(biāo)志著與官方直接掛鉤的PHP機(jī)構(gòu)在中國(guó)正式落戶了,在此獻(xiàn)上遲到的掌聲!
好的,切入正題:
我想在講述自己的學(xué)習(xí)方式前,對(duì)那些期望能從我的文章中獲得有用信息的人說(shuō)一句心里話:
的文章不會(huì)對(duì)您的學(xué)習(xí)起到實(shí)質(zhì)性的作用,您能否成功,還得靠自己的,堅(jiān)持,堅(jiān)持,再堅(jiān)持,就是步入成功的不二法門。
我先把我自己學(xué)習(xí)PHP的過(guò)程做一下概括:
(1)熟悉HTML/CSS/JS等網(wǎng)頁(yè)基本元素,完成階段可自行制作完整的網(wǎng)頁(yè),對(duì)元素屬性達(dá)到熟悉程度
(2)理解動(dòng)態(tài)語(yǔ)言的概念,運(yùn)做機(jī)制,熟悉PHP語(yǔ)法
(3)學(xué)習(xí)如何將PHP與HTML結(jié)合起來(lái)完成簡(jiǎn)單動(dòng)態(tài)頁(yè)面
(4)接觸MYSQL,開始設(shè)計(jì)數(shù)據(jù)庫(kù)程序
(5)不斷鞏固,摸透大部分PHP常用函數(shù),并可理解OOP,MYSQL優(yōu)化,以及模板
(6)完成一個(gè)功能齊全的動(dòng)態(tài)站點(diǎn)
我的這套線路可能跟許多學(xué)習(xí)PHP的愛好者不謀而合,這也算是一個(gè)循序漸進(jìn)的學(xué)習(xí)過(guò)程,不過(guò)新手不要看到上面的概括就以為學(xué)習(xí)蠻簡(jiǎn)單的,在此不得不對(duì)您稍微潑一下冷水,任何東西其實(shí)都不簡(jiǎn)單,即使是小吃部的燒餅也不是一下子就會(huì)做成的。
我先解釋一下我的學(xué)習(xí)思路。
首先,理解網(wǎng)站這一概念之后不難看出,任何網(wǎng)站都是由網(wǎng)頁(yè)組成的,也就是說(shuō)想完成網(wǎng)站,必須先學(xué)會(huì)做網(wǎng)頁(yè),因此必須要掌握了HTML,才能為今后制作網(wǎng)站打下基礎(chǔ)。
在學(xué)習(xí)HTML中我想邊學(xué)邊做是最有效的方式,當(dāng)然這一方式對(duì)于學(xué)習(xí)PHP同樣是最有效的。
HTML中的任何元素都要親自實(shí)踐,只有明白了什么元素會(huì)起到什么效果之后,你才會(huì)記憶深刻,而一味的啃書,絕對(duì)是不行的,我想大部分新手之所以覺得概念難學(xué),大部分是一個(gè)字“懶”,懶是阻止進(jìn)步的最大敵人,所以克服掉懶的習(xí)慣,才能更快的學(xué)好一樣?xùn)|西。
也許您在學(xué)習(xí)PHP的時(shí)候只想盡快的開發(fā)一個(gè)網(wǎng)站,也就會(huì)想我做網(wǎng)站,干嘛要學(xué)什么網(wǎng)頁(yè)這些小兒科?不難看出,眼高手低的新手不在少數(shù),這種思想無(wú)疑于建造空中樓閣,你不建地基,何來(lái)的房頂呢?
OK,掌握靜態(tài)網(wǎng)頁(yè)的制作技術(shù)是學(xué)習(xí)開發(fā)網(wǎng)站的先決條件,這一點(diǎn)就講到這里,因?yàn)檫@篇文章不是教程文章,也就不對(duì)技術(shù)進(jìn)行深入的刨析了。
我假設(shè)你目前已經(jīng)可以完成一個(gè)靜態(tài)頁(yè)面了,當(dāng)然,做的好看難看是另外一說(shuō),的第一個(gè)網(wǎng)頁(yè)也沒(méi)好看到哪去,但是“孩子”再丑,咱們做“爹媽”的也不能嫌棄不是?這畢竟是咱的成果。
那么咱們就開始學(xué)習(xí)動(dòng)態(tài)語(yǔ)言的概念吧,剛一接觸動(dòng)態(tài)語(yǔ)言,可能很多人都會(huì)蒙了,怎么這亂七八糟的東西,在網(wǎng)頁(yè)里顯示的時(shí)候卻是另外一碼事?其實(shí)這并不算亂七八糟,你寫的HTML代碼不也一樣是一堆堆的字符嗎?畢竟,代碼并不是作為直接輸出的,而是經(jīng)過(guò)處理的,說(shuō)白了,HTML是經(jīng)過(guò)HTML解析器,而PHP當(dāng)然也就通過(guò)PHP解析器了,跟學(xué)習(xí)HTML一樣的道理,想讓任何的解析器完成操作,就必須使用它們專用的語(yǔ)法結(jié)構(gòu),所以PHP長(zhǎng)相奇怪也就不足為奇了。
對(duì)于PHP的理解是新手最難邁過(guò)的一道門檻,不過(guò)你應(yīng)該感到幸運(yùn)的是PHP已經(jīng)最大極限的為了新手而努力了,如果你學(xué)過(guò)其他的語(yǔ)言,也許會(huì)覺得PHP的確相當(dāng)?shù)暮?jiǎn)單,但是如果你之前什么都沒(méi)學(xué)過(guò),那么阿彌陀佛,硬著頭皮琢磨吧。
書過(guò)三遍自然熟,這個(gè)簡(jiǎn)單的道理告訴我們,即使你理解不了PHP,但是也必須先跟它混個(gè)臉熟,看,一遍遍的看,看的同時(shí)一邊琢磨,一邊按照它所教的打代碼,即使你搞不清楚那些代碼到底是干嘛的,但是起碼你應(yīng)該找找感覺。
在一段掙扎之后,聰明的你,顯然已經(jīng)逐漸的開悟了,慢慢的理解了編程的概念,那么祝賀你,你已經(jīng)邁出了成功的第一步。
搞清楚HTML和PHP的概念,那么PHP和HTML混合編程應(yīng)該不成問(wèn)題,在這期間,你完全可以讓PHP給你算算一加一等于幾,然后在瀏覽器輸出,不要覺得幼稚,這的確是跟阿波羅登月一樣,你打的是一小段代碼,但是對(duì)于你的編程之路,可是邁出了一大步啊!興奮吧?但是不得不再給你潑點(diǎn)冷水,您還是菜鳥一個(gè)。
高興一段時(shí)間就必須繼續(xù)努力了,接下來(lái)就是學(xué)習(xí)數(shù)據(jù)庫(kù)了,MYSQL可算是PHP的黃金搭檔了,不過(guò),雖然話是這么說(shuō),你也可能恨不得把MYSQL給生吞活剝了,因?yàn)檫@一行一列的東東簡(jiǎn)直讓自己頭暈?zāi)垦!?/div>
頭暈歸頭暈,目眩歸目眩,你不可能吃飯的時(shí)候咬了自己一下舌頭就從此不吃飯了不是?放下畏懼,繼續(xù)努力,咱們是來(lái)征服它的,而不是被它征服的,振奮起來(lái)吧同志。
在一番搏斗之后,你終于理解了數(shù)據(jù)庫(kù)的概念,而且讓你興奮不已的是你終于可以通過(guò)PHP來(lái)連接數(shù)據(jù)庫(kù)了,這期間你是怎么學(xué)會(huì)的,我們不去考證了,但是事實(shí)證明,你已經(jīng)可以了。
學(xué)會(huì)了PHP和數(shù)據(jù)庫(kù)的你,無(wú)疑是左手拿著MOTOLOLA右手拿著NOKIA,要多瀟灑,有多瀟灑,哈哈,終于學(xué)會(huì)了,但是可能這個(gè)時(shí)候,又會(huì)有人不經(jīng)意的拍拍肩膀?qū)δ阏f(shuō):哥們,別高興的太早,你還是菜鳥,離學(xué)會(huì)還差著一大截呢!
等到你發(fā)奮努力的學(xué)會(huì)了用PHP成功的插入,刪除,更新數(shù)據(jù)的時(shí)候,顯然,你已經(jīng)距離成功指日可待了。
這個(gè)時(shí)候的你也許是這種狀態(tài):
你會(huì)HTML嗎?會(huì),我能編好幾個(gè)大表格排板的網(wǎng)頁(yè)啦!
你會(huì)PHP嗎?會(huì),我會(huì)把一加一的運(yùn)算寫在函數(shù)里,然后調(diào)用啦!
你會(huì)MYSQL嗎?會(huì),我會(huì)把我的信息在數(shù)據(jù)庫(kù)里插入刪除啦
那,接下來(lái)你該怎么做呢?我覺得,小試一下身手,大概是沒(méi)問(wèn)題了,那么交給你個(gè)任務(wù),做個(gè)留言本吧,這和HELLO WORLD有一比??!^_^,同是新手面臨的第一道關(guān)。
花了一段時(shí)間,你終于學(xué)會(huì)把表單的數(shù)據(jù)插入數(shù)據(jù)庫(kù),然后顯示出來(lái)了,應(yīng)該說(shuō)一個(gè)程序的雛形已經(jīng)誕生了。
但是,你可能瞅瞅東,看看西,人家這個(gè)編論壇,那個(gè)CMS,還有那啥CRM,我啥時(shí)候?qū)懸粋€(gè)呢?
不要急,可以說(shuō)你的馬步已經(jīng)扎的差不多了,接下來(lái)就要開始練把勢(shì)的時(shí)候了,如果有條件的話,用筆或者打印一個(gè)簡(jiǎn)易的PHP手冊(cè)在身上,時(shí)不時(shí)的摸出來(lái)看看,記得,去WC也不能放過(guò)(^2^)。
再有條件的話,買本書看看吧,《PHP+MYSQL WEB開發(fā)(第三版)》號(hào)稱圣經(jīng)級(jí),(也許是個(gè)不錯(cuò)的選擇(聲明:作者沒(méi)給我啥好處費(fèi),我也不是書托,隔著大老遠(yuǎn),我連他老兄的面都沒(méi)見過(guò)的說(shuō)-_-)
鞏固了自己的知識(shí),熟悉了PHP和MYSQL開發(fā)的要領(lǐng)之后,再回頭看你寫的那個(gè)留言本,你也許會(huì)懷疑那真的是你寫的嗎?當(dāng)然,如果屋里還有鬼的話,也許是它寫的-_-
這個(gè)時(shí)候,你的留言本應(yīng)該加入注冊(cè)以及分頁(yè)功能了,而如果你更強(qiáng)的話,UI(用戶界面)也可以加強(qiáng),完成之后,感覺是不是特有成就感?不管怎么樣,咱好歹是寫了一個(gè)動(dòng)態(tài)網(wǎng)站程序了,放在自己的網(wǎng)站上耍耍吧,讓好朋友來(lái)看看,嘿,看咱寫的多棒,然后再在網(wǎng)上宣傳一下。
幾天之后你再打開留言本,哎?哇,一下彈出N多頁(yè)面!很明顯,你的留言本并沒(méi)有做好安全防范,被人用JS代碼小小的耍了一下,我很同情你這個(gè)時(shí)候的感受,但是沒(méi)有別的辦法了,繼續(xù)努力吧!
你發(fā)奮努力,熟悉了安全方面的問(wèn)題,然后又設(shè)計(jì)了一些程序,感覺還不錯(cuò)。
那么接下來(lái),這就算學(xué)會(huì)啦?NO,NO,NO,還早呢,你至盡還沒(méi)碰過(guò)OOP之類的吧?模板呢?
恩,學(xué)!加緊學(xué)呀學(xué),學(xué)會(huì)了這些之后,你又學(xué)會(huì)了生成靜態(tài)網(wǎng)頁(yè),現(xiàn)在你應(yīng)該接觸一下XML了,恩,XML也了解了,那么AJAX你也得接觸接觸吧?AJAX完了….然后…
總而言之,你絕對(duì)不會(huì)發(fā)現(xiàn)你全部都學(xué)會(huì)了,一些真正的強(qiáng)人總會(huì)搞出新玩意來(lái)丟給你,你不學(xué)就落后了,也印證了前人的經(jīng)驗(yàn),果然是學(xué)無(wú)止境啊!
我想通過(guò)我的一番YY,你也應(yīng)該大致熟悉了一些學(xué)習(xí)過(guò)程,也許我的過(guò)程和你的有些出路,但是不管怎么樣是殊途同歸,我寫這么多,也只是給大家一個(gè)借鑒的機(jī)會(huì),至于好與不好,不敢打包票^0^
看完之后你發(fā)現(xiàn),羅嗦這么多,對(duì)我一點(diǎn)用處沒(méi)有啊,我知道該怎么學(xué),但是我想如何才能更快的學(xué),一周速成,啊不,24小時(shí)速成那種,你有沒(méi)?
我…….我沒(méi)有,但是2分鐘之內(nèi)把你扁進(jìn)醫(yī)院里,我倒是有把握-_-
學(xué)東西,永遠(yuǎn)不要妄想有速成這一說(shuō),告訴你了一個(gè)方式,但是缺少努力這一環(huán)節(jié),那也是白搭。
但是有一點(diǎn)我可以給你保證的就是,你學(xué)會(huì)了PHP,那么學(xué)其他的語(yǔ)言,肯定速成,反過(guò)來(lái)也一樣,如果你之前學(xué)過(guò)其他的語(yǔ)言,那么學(xué)PHP肯定快。
不過(guò)語(yǔ)法好學(xué),但是怎么用語(yǔ)法來(lái)實(shí)現(xiàn)每個(gè)人都有每個(gè)人的方式,幾乎是各有千秋。然而借鑒別人成功的代碼,絕對(duì)是有益無(wú)害,因此,多看那些經(jīng)過(guò)千錘百煉凝出來(lái)的經(jīng)典代碼,是進(jìn)階的最好方法。
講了這么多,無(wú)非是想說(shuō):學(xué)習(xí)PHP不僅要掌握方法,更多的是付出汗水,我不希望看到中途放棄的人,相信自己,相信自己的選擇,更要相信自己的能力,如果自己想放棄,暴力一點(diǎn)的話,就自己抽自己一個(gè)嘴巴,然后大吼:別人可以,我為什么就不可以?(是不是有點(diǎn)閻羅教練的味道,的確是電影看多了,抽嘴巴是會(huì)痛的,各位其實(shí)明白這個(gè)道理了就行了)
另外要叮囑各位的是,抵御誘惑,ASP/PHP/JSP/.NET的對(duì)比也許會(huì)讓你無(wú)所適從,你也許學(xué)了一半PHP,又開始打C#的主意,或者有人說(shuō)JAVA很強(qiáng),這個(gè)時(shí)候的你絕對(duì)不能動(dòng)搖,哪怕你真想學(xué),也得學(xué)會(huì)了PHP。然后再學(xué),見異思遷是最不可取的,狗熊掰玉米就是這個(gè)道理,如果經(jīng)常中途放棄,只能是一無(wú)所獲,還浪費(fèi)了N多的時(shí)間和經(jīng)歷,得不償失,最重要的是,你會(huì)被別人瞧不起,沒(méi)有人會(huì)喜歡和見異思遷的人交朋友,因?yàn)檫@種人太不安分,太不可靠,因此,你必須要強(qiáng)迫自己完成自己的目標(biāo),哪怕可能會(huì)很難受,也得堅(jiān)持,毅力就是這么鍛煉出來(lái)的。