PHP為什么這么難學(xué)?
網(wǎng)友解答: PHP同JAVA,Python,c相比,應(yīng)該是相對簡單的一門語言,而針對自學(xué)者來說,那就需要一個可行的計(jì)劃,和足夠的耐心來學(xué)習(xí),如果全身心的投入編程中,四個半月就可以走馬上任
PHP同JAVA,Python,c相比,應(yīng)該是相對簡單的一門語言,而針對自學(xué)者來說,那就需要一個可行的計(jì)劃,和足夠的耐心來學(xué)習(xí),如果全身心的投入編程中,四個半月就可以走馬上任了,當(dāng)然自己也得付出足夠的毅力與時(shí)間去實(shí)踐。
最好是當(dāng)天學(xué)習(xí)到的知識當(dāng)天消化,多敲代碼,多去嘗試著開發(fā)各種商城,系統(tǒng)等等。
下面我就想分享一下我剛開始學(xué)習(xí)PHP的時(shí)候,老師給我擬的一份四個半月學(xué)會PHP的學(xué)習(xí)大綱??偣卜炙膫€階段。
第一階段
html+css(兩個星期(10天課)周六周天完成京東商城首頁和注冊頁面)
第二階段
1.php基礎(chǔ)階段(10天課程,從php的語法開始學(xué)習(xí),到循環(huán)語句,條件語句...基本學(xué)習(xí)沒門語言開始學(xué)習(xí)的時(shí)候都要學(xué)習(xí)的基礎(chǔ))
2.mysqli擴(kuò)展庫對數(shù)據(jù)庫的操作(3天)
3.mysql數(shù)據(jù)庫學(xué)習(xí)(創(chuàng)建表,增刪改查,數(shù)據(jù)庫和數(shù)據(jù)庫表的導(dǎo)入導(dǎo)出)(3天)
4.項(xiàng)目新聞列表分頁(利用以上學(xué)習(xí),使用a標(biāo)簽的get請求方式實(shí)現(xiàn)分頁)(2天)
php進(jìn)階階段
1)GD庫(制作驗(yàn)證碼)
2)文件上傳,實(shí)現(xiàn)多文件和單文件的上傳(2天)
3)正則表達(dá)式(1天)
4)文件目錄(4天)
5)利用學(xué)的文件目錄知識(新聞項(xiàng)目——實(shí)現(xiàn)沒增加一條新聞就存入數(shù)據(jù)庫的同時(shí)生成靜態(tài)頁面,存到文件中)(2天)
6)PDO類對數(shù)據(jù)庫的操作(3天)
7)設(shè)計(jì)模式(3天)
8)面向?qū)ο螅?,接口,繼承,封裝等)(4天)
9)封裝文件上傳類,mysql類(增刪改查),驗(yàn)證碼類(3天 ,一天一個)
10)session(利用session實(shí)現(xiàn)用戶登錄狀態(tài)和非登錄狀態(tài))(1天)
第三階段
1.js語法基礎(chǔ)(3天)
2.jq語法基礎(chǔ)(3天)——寫一個輪播圖和一個定時(shí)器
3.ajax和json基礎(chǔ)(3天)
4.ajax和json結(jié)合實(shí)現(xiàn)登錄效果,頁面不刷新請求服務(wù)器效果(2天)
5.redis基礎(chǔ)(2天)
6.mongodb
7.memcached
第四階段
tp框架一個商城(15天)
laraval框架一個博客(15天)(其中的一小點(diǎn)功能應(yīng)用memcached緩存實(shí)現(xiàn)點(diǎn)贊)
微信接口的調(diào)用(微信公眾號中用代碼調(diào)用接口實(shí)現(xiàn)獲取用戶信息,調(diào)用天氣接口,獲取每天的天氣)(5天)
小程序基礎(chǔ)(10天)
自學(xué)的話要了解到博客里面有什么功能模塊(并通過所學(xué)的知識實(shí)現(xiàn)他)
網(wǎng)友解答:盡管其它的一些答主都覺得這個題目有點(diǎn)不可思議,但對于初學(xué)者尤其是網(wǎng)站開發(fā)尚未完全入門的人,還是非常有可能存在這樣的疑問的。
比如,之前有個網(wǎng)友想做微信交互開發(fā)的程序,其實(shí)他的要求很簡單:就是公眾號粉絲發(fā)消息,然后根據(jù)不同的消息內(nèi)容自動給出回復(fù),這樣的需求使用官方的demo稍微修改一下就能實(shí)現(xiàn)。但他仍然反復(fù)問我:我需要買哪些專業(yè)的書籍?還要學(xué)什么php框架嗎?搞的緊張兮兮的。為什么會這樣?就是因?yàn)樗€沒有搞清楚php到底是個什么東西,網(wǎng)絡(luò)上很多看起來相當(dāng)高深的文章把他嚇壞了!
還有個更搞笑的事:一哥們學(xué)html和js相當(dāng)入門了,有天突然問我:php不是通過echo輸出內(nèi)容的嗎?為什么我頁面中的php代碼解析不了、全部原樣輸出?大概看了他的代碼之后,沒發(fā)現(xiàn)什么問題。最后才發(fā)現(xiàn),他竟然把php代碼直接寫到了后綴名為html的文件中了,這還解析個鬼?。?/p>
由此可見,新手剛學(xué)php時(shí),由于各方面因素所導(dǎo)致的認(rèn)知局限,覺得php難學(xué)是很正常的。同時(shí)也說明,目前市場上的php入門書籍或者相關(guān)的文章,接地氣還不夠,因?yàn)橐恍┘?xì)節(jié)說明的不到位,會讓他們走很多的彎路,浪費(fèi)大量無謂的時(shí)間。好吧,如果你是新手,請好好閱讀一下本篇回答,希望能給你一些幫助。
簡單認(rèn)識一下什么是php所謂的php,其實(shí)就是一種服務(wù)器端的編程語言,它既可以獲取客戶端發(fā)送來的數(shù)據(jù),也可以將處理好的數(shù)據(jù)輸出并返回到客戶端。而很多網(wǎng)友之所以把它戲稱為“世界上最好的語言”,重要原因之一是它的語法規(guī)則和javascript太像了:會了js,php的使用也就水到渠成!
例如,我們在SublimeText3編輯器新建一個擴(kuò)展名為php的文件,那么,該文件就會自動按php中的語法規(guī)則來進(jìn)行編輯處理(如果新建的文件沒有被識別為php,也可以在編輯器中手工點(diǎn)擊下圖中的圓圈所示位置,再選擇php即可)。如下圖:
只要你稍微了解一點(diǎn)html標(biāo)簽及css樣式方面的知識,就應(yīng)該能看懂上圖中的字符串是什么意思。
以上代碼中,只有包含在 <?php 和 ? 之間的部分才是php程序,<?php 和 ?其實(shí)就是php代碼的開始和結(jié)束標(biāo)記(相當(dāng)于html頁面文件中的標(biāo)簽)。在php標(biāo)記之外的代碼將被直接作為html的頁面內(nèi)容進(jìn)行輸出,因?yàn)閜hp程序是可以嵌入到html代碼中執(zhí)行的。
這段代碼其實(shí)就是聲明了3個字符串變量$st、$div和$p,每個變量的值都是字符串形式的html代碼。如果僅聲明一個普通的字符串變量,可以直接這樣:
$str = '我是字符串'; //這里用單引號或雙引號都可以,具體區(qū)別稍后再說
如果單純從語法上看,上述php代碼和js相比有兩處是明顯不同的:
第一,php中的變量必須使用美元符號$,而js是使用var關(guān)鍵字;
第二,拼接字符串使用圓點(diǎn)符號,不能用 + 號,+ 號在php中僅用于算術(shù)運(yùn)算。
除了上述兩點(diǎn)外,其它規(guī)則與js都基本相同。比如,聲明變量時(shí)不用指定數(shù)據(jù)類型、聲明的同時(shí)可以=號賦值、語句要用分號結(jié)束、字符串?dāng)?shù)據(jù)需要用單引號或雙引號括起來等等,就連給代碼添加注釋的方式也是和js完全相同的?,F(xiàn)在,我們在上述代碼的php標(biāo)記外圍再隨便輸入一些內(nèi)容:
<b我是在php標(biāo)記外面的</b<br<br
<?php
…php代碼略…
?
<a 我也是在php標(biāo)記外面的</b
然后在瀏覽器中直接運(yùn)行這個test.php文件,通過控制臺查看其代碼如下:
通過查看代碼就可發(fā)現(xiàn),php文件中的所有代碼最終都會解析為頁面中的body元內(nèi)容素進(jìn)行輸出,同時(shí)會自動加上head、html等標(biāo)簽元素。
這就說明:php類型的文件其實(shí)就是一種頁面,只不過在它里面可以嵌入php程序代碼而已。當(dāng)它里面沒有嵌入php代碼時(shí),就可以當(dāng)做普通的頁面文件來使用;當(dāng)嵌入php代碼時(shí),其通過echo輸出的內(nèi)容將與原有的html代碼融合在一起展示給用戶。當(dāng)然,在echo之前,php可以先進(jìn)行一系列的邏輯運(yùn)算和處理,這些邏輯運(yùn)算的代碼是不會展示在頁面中的。
如上圖所示,由于通過php程序輸出的內(nèi)容使用了class樣式,因此,最終的頁面展示效果中其字體為12px;而php標(biāo)識外面添加的dom元素沒有使用此樣式,其字號明顯就要大一些。
所以,請不要把php想的多么復(fù)雜和高深,姑且把它當(dāng)成另外一種類型的頁面就可以了。
面向?qū)ο笈c面向過程和js不太一樣的是,php同時(shí)支持面向?qū)ο蠛兔嫦蜻^程的編程方式,開發(fā)者可以在面向?qū)ο蠛兔嫦蜻^程二者中自由選擇其一或是混合使用。
什么是面向?qū)ο??簡單的說,就是把程序中所有可操作的東西都看成是一個對象,這樣就可以使用它們的屬性和方法并采用事件驅(qū)動的方式來對其進(jìn)行各種操作。這個對初學(xué)者來說確實(shí)有相當(dāng)?shù)碾y度,需要考慮的因素比較多,不是一時(shí)半會就能學(xué)的會的。
既然面向?qū)ο笥悬c(diǎn)難,新手完全可以從“面向過程”快速入門,而這也正是絕大多數(shù)php開發(fā)者所采用的方式。由于Web頁面解析本身就是很“過程化”的,而在頁面中嵌入面向過程的處理代碼是非常自然的手段,其實(shí)現(xiàn)工具就是大量的使用php函數(shù)。php中的函數(shù)非常多,字符串、數(shù)組、數(shù)值、日期等等,使用時(shí)按它們的語法格式調(diào)用就行了,真的沒啥技術(shù)含量。
總之一句話,別管他X的什么“對象”還是“過程”,理論上的東西先不管,自己能夠干起來、先解決問題再說!這就是我給初學(xué)者的建議。
我是人民郵電出版社簽約作者,歡迎大家關(guān)注我一起交流提高,謝謝!