|
身為一名中級phper菜鳥..無聊了就愛在各個(gè)php論壇瞎轉(zhuǎn).看到了好多php初學(xué)者都問到了很多相同的問題.而且我學(xué)php的時(shí)候也都遇到過.為了 讓php初學(xué)者少走一些彎路.所以突然神經(jīng)恍惚.決定寫下此文章.僅供php初學(xué)者參考.如有錯(cuò)誤.還望指出.不甚感激.
php其實(shí)是一種很簡單易學(xué)的語言.如果要精通php多則三年.少則一年就足夠了.但是為什么三年之后我們照樣是菜鳥?
不知道從什么開始.學(xué)習(xí)php我們不得不學(xué)習(xí)數(shù)據(jù)庫.學(xué)習(xí)架構(gòu).學(xué)習(xí)面向?qū)ο?學(xué)習(xí)前端.學(xué)習(xí)linux.學(xué)習(xí)協(xié)議甚至美工等直接導(dǎo)致了現(xiàn)在phper都是最累的一種程序員.
最累就不算什么了.往往php會被認(rèn)為是下等的程序.拿著最低級的工資.卻要掌握web方面幾乎全部的知識.這實(shí)在是不公平.
可喜的是 我們逐漸在國內(nèi)看到了轉(zhuǎn)變.國內(nèi)越來越多的公司從Java或者C#等轉(zhuǎn)到了php.所以各位phper一定要有自己的夢想.你們都會很牛B的.請堅(jiān)信.
扯遠(yuǎn)了.回到我要說的重點(diǎn)上.下面幾個(gè)問題包含著我遇到的問題.也許我說的不一定對或者你不一定同意我的看法.十分愿意接受你的意見.總之我們只是想讓phper都雄起:-)
1.編碼的問題
這不光是php..只要是程序上.就會遇到.至少我和我身邊的人都遇到了.而且在Web方面.往往編碼問題更是非常難解決.非常難調(diào)試.有時(shí)候程序出了莫名其妙的問題,很難想到是編碼出了問題等等.
這些問題總是困擾著我們.所以我建議php初學(xué)者.一定要編碼統(tǒng)一.并且強(qiáng)烈建議統(tǒng)一為UTF-8.中文不建議使用GBK或者GB2312等.因?yàn)樵贏JAX中傳輸?shù)臅r(shí)候是不認(rèn)識這種編碼的.
如果要統(tǒng)一編碼,就要在編碼可能出現(xiàn)的任何地方注意一下.
1) header頭的編碼
個(gè)人建議在你的php中都應(yīng)該加上下面這句話(特殊header除外)
復(fù)制代碼 代碼如下:
header("Content-type: text/html;charset=utf-8");
這樣可以避免一些問題.比如我們可以看到有些網(wǎng)站submit后就是一個(gè)alert然后跳轉(zhuǎn).但是他們沒有設(shè)置編碼.如果他的編碼跟瀏覽器的默認(rèn)編碼不一致.就會出現(xiàn)亂碼了.
你是單純的HTML.一定要記得把meta的編碼標(biāo)簽放到title標(biāo)簽前面. 如果你不理解就記住把編碼的信息放到head標(biāo)簽的第一行就可以了.最終的效果是這樣的
復(fù)制代碼 代碼如下:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...
2) 文件的編碼
我們保存文件的時(shí)候,選擇編碼一定要統(tǒng)一.如果按照上面的.我們就應(yīng)該選擇UTF-8.
一般的編輯器都有此文件的編碼信息.如果你發(fā)現(xiàn)不是UTF-8.請馬上更改.
比如我們在Dreamweaver中打開了一個(gè)模板文件.發(fā)現(xiàn)右下角顯示 GB2312(簡體中文).此時(shí)不要做任何更改.馬上CTRL+J 然后選擇編碼更改成UTF-8模式并保存.
文件的編碼不一定是php文件的.也得保證你的JavaScript文件與css文件都為UTF-8編碼.
另外還有一個(gè)重要的一點(diǎn).就是BOM..這個(gè)東東php是不太歡迎的.所以我們在保存的時(shí)候要選擇UTF-8無BOM格式.如果你用的編輯器是UE.那么請你著重注意這一點(diǎn).
3) 數(shù)據(jù)庫的編碼
這個(gè)我就不想多說了.網(wǎng)上有太多的文章.如果你是MySQL記得每次連接后進(jìn)行SET NAMES = ‘utf8′就可以了.并且那個(gè)utf8中間是沒有橫線的.
2.MVC的問題
程序員理論上來說應(yīng)該是個(gè)完美主義者.他們不光想著把程序?qū)懙倪\(yùn)行就可以了.而且還要優(yōu)雅.
但是話說回來.把程序按照MVC做了以后我們的代碼就優(yōu)雅了嗎? 答案當(dāng)然是否定的.
學(xué)習(xí)架構(gòu)是一個(gè)理解的過程.當(dāng)你真正體會到這個(gè)架構(gòu)的好處的時(shí)候.才會理解其真正的含義.切勿盲目.
有時(shí)候我們會做這樣的打算.用這個(gè)月的時(shí)間去學(xué)習(xí)MVC.好吧.我想你應(yīng)該這樣去做.你學(xué)會給自己定目標(biāo)了.
但是一個(gè)月后我們也許并不能真正的理解MVC..但是至少我們會根據(jù)他的模式他的基本.換句話說也許我們沒有學(xué)會葵花寶典.但是我們應(yīng)該會用辟邪劍法了.
3.面向?qū)ο蟮膯栴}
關(guān)于php面向?qū)ο蟮膯栴}.一直都糾纏不清.有的人不覺得php面向?qū)ο笫莻€(gè)好的東西.有的人甚至不認(rèn)為面向?qū)ο笫莻€(gè)好的玩意,比如Linus.
我們不必去糾纏這個(gè)東西到底好不好.至少我們應(yīng)該知道從面向?qū)ο笳Q生到現(xiàn)在.經(jīng)過了這么多年的演變.運(yùn)用到各種項(xiàng)目甚至語言中.我們有理由相信存在即有其道理.
實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn).這么多年面向?qū)ο笤桨l(fā)展形勢越好.看來我們學(xué)習(xí)就變得是種必須了.
與一些架構(gòu)的知識類似.面向?qū)ο笠膊皇悄敲春脤W(xué)的.面向?qū)ο笫欠N理念.但是具體到某種語言的時(shí)候.其意義也會發(fā)生一些微妙的變化.
php的面向?qū)ο蠛莒`活.再加上其特有的魔術(shù)方法.會造就出一種特別形勢的面向?qū)ο?也許這跟你平時(shí)看Java的面向?qū)ο蟛惶粯?
不一定把你需要的方法放到一個(gè)類中就是面向?qū)ο?當(dāng)你真正體會到面向?qū)ο蠼o你的編碼帶來快捷.帶來方便.你就對面向?qū)ο笥懈畹囊粚永斫饬?
正所謂欲速則不達(dá).切勿心急.你想幾天之內(nèi)理解相對論那純粹是扯淡.
4.算法的問題
似乎php與算法總是相距甚遠(yuǎn)的.php大多數(shù)算法都是基于數(shù)組實(shí)現(xiàn)的.而我們又知道php的數(shù)組的特性就注定當(dāng)數(shù)組變得非常大的時(shí)候.效率會直線下降.
其實(shí)php就是個(gè)做網(wǎng)站的.大家不要也不必給她帶什么高帽子.在Web方面尤其是在php所服務(wù)的前端的實(shí)際情況下會涉及到算法的地方會非常少.
php的算法面試題無非就是對數(shù)組或者對字符串的操作..動動腦子加上手冊.那基本就沒問題了.
那你也許會問.我想學(xué)習(xí)php.那我還學(xué)習(xí)算法嗎?
我覺得你需要學(xué).并且更需要學(xué)數(shù)據(jù)結(jié)構(gòu).這門功課就像是一門內(nèi)功.會在潛移默化中影響你的編碼.
這時(shí)候再配合上我們前面的辟邪劍法.恭喜你 你已經(jīng)學(xué)會葵花寶典了!
5.框架的問題
php的框架是各種語言中最多的.用不用框架.選什么框架這又成為一個(gè)爭議的話題..
我的建議是非常推薦學(xué)習(xí)至少一款框架.這可以加深你對php的認(rèn)識.我們學(xué)習(xí)框架不是說要學(xué)這個(gè)框架怎么用.怎么做項(xiàng)目.
我們要去看它的源碼.看看他是怎么實(shí)現(xiàn)的.這時(shí)候你就可以選擇自己開發(fā)一個(gè)小型的框架.不求做的多好.不求別人多少項(xiàng)目去運(yùn)用.
我們只是為了學(xué)習(xí)而已.
6.JavaScript的問題
可以說我看過這么多語言.最神奇就莫過于JavaScript了.平時(shí)Java一直宣稱自己一切皆對象.其實(shí)我更覺得JavaScript才是一切皆對象.
JavaScript好學(xué)嗎? 好學(xué)!其實(shí)在平時(shí)Web運(yùn)用時(shí)候.一般的JavaScript操作就是DOM操作.
JavaScript難學(xué)嗎? 難學(xué)!如果我們被其他語言的面向?qū)ο蟮乃季S束縛了.就很難理解JavaScript的面向?qū)ο?并且JavaScript里面概念也非常多.
prototype arguments call apply callee caller 閉包等概念就讓我們不知所措.再加上詭異的JavaScript的代碼風(fēng)格與其難調(diào)試的特征直接導(dǎo)致我們這些菜鳥避而遠(yuǎn)之.
曾經(jīng)我轉(zhuǎn)發(fā)過一段實(shí)現(xiàn)document.ready的代碼.其詭異程度不得不佩服.
個(gè)人覺得看一些JavaScript框架的源碼就是最好的學(xué)習(xí)方法.曾經(jīng)在寫我的php框架的時(shí)候.由于使用了統(tǒng)一入口+自己定義的URL規(guī)則.所以再使用普通屬性為get的form的時(shí)候就會獲取不到參數(shù).
這時(shí)候我就想到了jQuery.form中的formSerialize方法.摘選出來并做了一些修改.就可以拿來使用了.
7.CSS問題
我之所與把CSS跟JavaScript分開來說.我覺得CSS的學(xué)習(xí)更有特點(diǎn).
其實(shí)要我說CSS是最簡單的東西了.我們只是知道了一些基本的CSS屬性.寫頁面絕對不成問題.
CSS的主要特征在于必須動手.你看N本CSS的書不如實(shí)際動手去寫一個(gè)頁面.
CSS另外一個(gè)特點(diǎn)就是得多試.也許這個(gè)屬性不能達(dá)到你的效果.那你就換一個(gè).這也是最笨最有效的辦法:-)
當(dāng)然 這只是初級CSS的要求. 會了這些之后 我們還得兼容瀏覽器. 其實(shí)這個(gè)也不難 無非就是幾個(gè)瀏覽器同時(shí)開著一個(gè)屬性一個(gè)屬性的試.
也可以熟記一些hack 比如IE6認(rèn)識_ IE都認(rèn)識*等.如果你覺得這樣寫CSS不夠標(biāo)準(zhǔn).那么把hack放到不同的css文件中.比如ie6的就叫ie6.css
然后再頁面上用下面的代碼就可以了.
復(fù)制代碼 代碼如下:
<!--[if lt IE 6]>
<link href="css/ie6.css" rel="stylesheet" type="text/css" />
<![endif]-->
更高級的當(dāng)然是用戶的體驗(yàn)與設(shè)計(jì)了.這個(gè)我也不懂就不說了@_@ 希望達(dá)人補(bǔ)充.
8.linux的問題
個(gè)人強(qiáng)烈建議每人的電腦上都安裝一個(gè)linux系統(tǒng).如果你覺得太折騰 可以選擇wubi方式安裝Ubuntu.對于懶人這個(gè)是最簡單有效的方法了.
你無聊的時(shí)候可以下載一份php源碼自己編譯下試試.切忌apt-get.因?yàn)橥?a href=/yuedu/fuwuqi/ target=_blank class=infotextkey>服務(wù)器版本不是rhel就是centos.那里是沒有這個(gè)命令的.
而且apt-get到的往往不是最新的版本.并且又不能自己定制.
linux總會出現(xiàn)這樣活著那樣莫名其妙的問題.比如環(huán)境稍微不一樣就編譯不通過.服務(wù)起不來.
這時(shí)候不要著急.看錯(cuò)誤提示 看日志.Google下自己嘗試解決.
編譯完不要覺得就完了 試試不同的配置.而且修改一下源碼再編譯試試.
比如我們下載了一份nginx的源碼.然后修改下header頭等一些地方. 就可以編譯一份屬于自己的HTTP Web Server了.
當(dāng)然 你如果叫BWS或者GWS也行:-)
還有個(gè)問題 linux需要背命令嗎? 這個(gè)是無可厚非的. 熟記一些常用的命令可以提高速度.這點(diǎn)我需要反思.經(jīng)常一些常用的命令還需要看下參數(shù)..
另外一個(gè)就是Shell的問題. Shell其實(shí)不難.但是語法在我看來比較丑陋@_@. 看看wiki就可以學(xué)習(xí)大半了..主要還得是聯(lián)系. 我們可以看到一個(gè)現(xiàn)象.一些公司在招聘高級phper的時(shí)候這條也列為必須條件了.
其實(shí)網(wǎng)上linux的資料非常多. 大多數(shù)你遇到的問題別人都會遇到.所以善于用Google. 并且熟讀英語.
9.語言的問題
這個(gè)的問題就太多口水戰(zhàn)了.最終誰也沒有戰(zhàn)勝誰.我們不必去參與這些無聊的事情.這些都是年輕糞青要做的.
你再牛B你有Linus牛B嗎? 他噴C++的噴了這么多年.C++怎么樣了?
所以我們不必糾纏這些.做好自己做的就OK了.
既然你選擇了php.就不要猶豫.
也許我們在做項(xiàng)目的時(shí)候php顯得不夠用了.那我們可以用Java或者C來做個(gè)中間件.這又何嘗不可.
一種語言發(fā)揮她的最大最用才是真理.
10.態(tài)度的問題
態(tài)度一定要謙虛謹(jǐn)慎. 這是作為一個(gè)程序員應(yīng)該有的美德.切勿自我膨脹.
你學(xué)的越多 你就會發(fā)現(xiàn)自己不足就越多.
等你牛B了你可以說一些狂妄的話.但是現(xiàn)在我們都不牛B.至少如果你看到我寫的這篇文章.你應(yīng)該還不太牛B. 我說了這篇文章是面向初學(xué)者的:-)
11.女人的問題
呃..這個(gè)自己解決吧@_@
php技術(shù):一篇有意思的技術(shù)文章php介紹篇,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。