1. 在合適的時(shí)候使用PHP – Rasmus Lerdorf
沒(méi)有誰(shuí)比PHP的創(chuàng)建者Rasmus Lerdorf明白PHP用在什么地方是更合理的,他于1995年發(fā)布了PHP這門語(yǔ)言,從那時(shí)起,PHP就像燎原之火,燒遍了整個(gè)開發(fā)陣營(yíng),改變了互聯(lián) 網(wǎng)的世界。可是,Rasmus并不是因此而創(chuàng)建PHP的。PHP是為了解決WEB開發(fā)者的實(shí)際問(wèn)題而誕生的。
和許多開源項(xiàng)目一樣,PHP變得流行,流行的動(dòng)機(jī)并不能用正常的哲學(xué)來(lái)進(jìn)行解釋,甚至流行得有些孤芳自賞。它完全可以作為一個(gè)案例,一個(gè)解決各種Web問(wèn)題的工具需求所引起的案例,因此當(dāng)PHP剛出現(xiàn)的時(shí)候,這種工具需求全部聚焦到PHP的身上。
但是,你不能奢望PHP可以解決所有問(wèn)題。Lerdorf是**承認(rèn)PHP只是一種工具的人,并且PHP也有很多力所不能及的情況。
根據(jù)工作的不同來(lái)選擇合適的工具。我跑了很多家公司,為了說(shuō)服他們部署和使用PHP,但是這并不意味著PHP對(duì)所有問(wèn)題都適用。它只是可以一個(gè)解決大部分問(wèn)題的front-end腳步語(yǔ)言。
作為一個(gè)web開發(fā)者,嘗試用PHP解決所有問(wèn)題是不科學(xué)的,同時(shí)也會(huì)浪費(fèi)你的時(shí)間。當(dāng)PHP玩不轉(zhuǎn)的時(shí)候,不要猶豫,試用一下其他的語(yǔ)言吧。
2. 使用多表存儲(chǔ)提高規(guī)模伸縮性 – Matt Mullenweg
沒(méi)有人愿意質(zhì)疑Matt Mullenweg在PHP方面的權(quán) 威性,他開發(fā)了這個(gè)星球上**流行的blog系統(tǒng),(依靠一個(gè)強(qiáng)大的社區(qū)力量支持): WordPress. 創(chuàng)建Wordpress以后,Matt和他的團(tuán)隊(duì)啟動(dòng)了WordPress.com平臺(tái),一個(gè)基于WordPress MU的免費(fèi)blog站點(diǎn)。現(xiàn)在,Wordpress.com已經(jīng)擁有大約400萬(wàn)用戶, 這些用戶每天提供超過(guò) 140,000篇的日志。如果有人知道如何讓網(wǎng)站的規(guī)模伸縮自如,這個(gè)人一定是Matt Mullenweg。2006年的時(shí)候 Matt對(duì)Wordpress的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了前瞻性的改進(jìn),并且解釋了為什么Wordpress MU對(duì)每個(gè)blog使用獨(dú)立的MYSQL表格, 而不是把所有的blog數(shù)據(jù)都塞進(jìn)一個(gè)巨大的表格。
我們測(cè)試過(guò)這個(gè)方法,但是發(fā)現(xiàn)如果要擴(kuò)展它的伸縮性,代價(jià)太高。如果用一個(gè)整體的數(shù)據(jù)結(jié)構(gòu),在大流量面前,你將會(huì)面臨服務(wù)器硬件的問(wèn)題。在MU里面。用戶 們都被分布到獨(dú)立的表格當(dāng)中,并且可以輕易地組織起來(lái)。舉個(gè)例子,WordPress.com把用戶的數(shù)據(jù)分散存儲(chǔ)到4096個(gè)數(shù)據(jù)庫(kù)中,這些數(shù)據(jù)庫(kù)可以 分散大規(guī)模的數(shù)據(jù)訪問(wèn),實(shí)現(xiàn)流量和壓力分流。
數(shù)據(jù)表的可遷移性讓代碼(blog)可以運(yùn)行得更快,并且讓系統(tǒng)具備更強(qiáng)的伸縮性。依靠強(qiáng)大的緩存策略和靈活的數(shù)據(jù)庫(kù)運(yùn)用策略, Matt向人們展示了時(shí)下**流行的Facebook和Wordpress.com都可以在PHP下穩(wěn)定運(yùn)行,并且處理驚人的訪問(wèn)量。
3. 千萬(wàn)不要相信用戶 – Dave Child
Dave Child是Added Bytes (previously ilovejackdaniels.com) 網(wǎng)站的核心人物,這個(gè)網(wǎng)站以他出色的《cheat sheets for many programming languages》而聞名。 Dave為很多英國(guó)的公司服務(wù),并且已經(jīng)在編程世界里樹立起相當(dāng)?shù)臋?quán) 威。
Dave為PHP開發(fā)者提供了很多深謀遠(yuǎn)慮的建議,并總結(jié)成了《writing secure code in PHP》:千萬(wàn)不要相信你的用戶,他們甚至可能會(huì)傷害你。
有一條web開發(fā)的基本原則,我重復(fù)多少遍都覺(jué)得不夠,那就是:千萬(wàn)不要相信你的用戶,同時(shí)要假設(shè)你網(wǎng)站中的每個(gè)數(shù)據(jù)單元都是從用戶那里收集來(lái)的惡意代 碼。很多時(shí)候,你必須用JAVAscript在客戶端檢驗(yàn)表單提交過(guò)來(lái)的內(nèi)容, 如果你習(xí)慣了如此,那么,這是一個(gè)好習(xí)慣。如果安全性對(duì)你來(lái)說(shuō)很重要,這就是**重要**需要學(xué)習(xí)的原則。
Dave目前正致力于為它的《Writing Secure PHP》系列書籍整理實(shí)例,書的**后他說(shuō):
**后,變得偏執(zhí)一點(diǎn)吧。除非你認(rèn)為你的站點(diǎn)永遠(yuǎn)不會(huì)受到攻擊,否則就正視所有的問(wèn)題,當(dāng)問(wèn)題真正發(fā)生的時(shí)候,你的情況會(huì)變得很糟。你需要把每個(gè)用戶都看成會(huì)帶來(lái)一場(chǎng)攻防站的黑客,想盡一切辦法來(lái)保護(hù)站點(diǎn)的安全,同時(shí)想好相應(yīng)問(wèn)題的解決方案。
4. 多使用PHP緩存 – Ben Balbo
Ben Balbo開發(fā)了Site Point,一個(gè)為developers和designers提供指導(dǎo)的網(wǎng)站。他是墨爾本PHP開發(fā)和開源俱樂(lè)部的成員, 因此他對(duì)PHP有一定的了解,同時(shí)對(duì)PHP caching有一定的想法和經(jīng)驗(yàn)。
如果你擁有一個(gè)訪問(wèn)量很大,但更新并不頻繁的站點(diǎn)(比如blog,基于某種CMS),或許它需要進(jìn)行一些改造,這些改造不會(huì)花費(fèi)太多的時(shí)間,但是對(duì)性能有突出的貢獻(xiàn)。 如果要為一個(gè)復(fù)雜/更新頻率很快的站點(diǎn)建立緩存機(jī)制,過(guò)程可能會(huì)很曲折,但是好處也是顯而易見的。
PHP緩存技術(shù)有很多種,Ben為我們推薦了如下一些:
緩存函數(shù)的運(yùn)行結(jié)果
設(shè)置過(guò)期時(shí)間
緩存IE下 載的文件
模板緩存技術(shù)
Cache_Lite
由于PHP作為動(dòng)態(tài)語(yǔ)言的特性,緩存機(jī)制對(duì)于更新頻率并不快的站點(diǎn)來(lái)說(shuō)非常重要。
5. 使用IDE, Templates和Snippets加速PHP開發(fā) – Chad Kieffer
當(dāng)Chad Kieffer從UI設(shè)計(jì)和數(shù)據(jù)庫(kù)優(yōu)化的工作中抽身出來(lái)的時(shí)候,他會(huì)在他的博客2 tablespoons上分享很多技術(shù)經(jīng)驗(yàn)。由于Chad多方面的全面發(fā)展,他經(jīng)??梢园l(fā)現(xiàn)其他程序員不能發(fā)現(xiàn)的問(wèn)題,并形成相關(guān)經(jīng)驗(yàn),尤其是他開發(fā)網(wǎng)站 的方法。他參與了網(wǎng)站開發(fā)的各個(gè)環(huán)節(jié),因此他的建議對(duì)于提高網(wǎng)站開發(fā)的大局觀非常有用。
Chad認(rèn)為使用Eclipse PDT(Eclipse’s PHP development package) 這樣的IDE,同時(shí)使用一些模板技術(shù)和開源項(xiàng)目可以有效地提高PHP的開發(fā)速度。
緊湊的計(jì)劃,長(zhǎng)長(zhǎng)的to do lists以及deadlines讓開發(fā)人員非常苦悶。不過(guò)有些功能,比如Eclipse Templates,可以有效減少編碼的時(shí)間和出錯(cuò)的幾率。
通常來(lái)說(shuō),任何項(xiàng)目都可以自動(dòng)化,自動(dòng)化程度越高, 你完成項(xiàng)目的時(shí)間就越短?;〞r(shí)間來(lái)開發(fā)使用頻率很高的框架和模板,將會(huì)節(jié)省你以后更多時(shí)間。同時(shí),使用像Eclipse and the PDT package這樣的IDE,你會(huì)發(fā)現(xiàn)效率得到明顯提高,IDE可以自動(dòng)閉合,補(bǔ)全分號(hào)并且可以在本地debug。
6. 利用好PHP的過(guò)濾函數(shù) – Joey Sochacki
或許Joey Sochacki并不像Matt Mullenweg那樣有名 ,但他也是一個(gè)經(jīng)驗(yàn)豐富的開發(fā)者,并且**他的博客Devolio分享了很多技術(shù)經(jīng)驗(yàn)
Joey發(fā)現(xiàn)在編寫php代碼的過(guò)程中有很多地方需要進(jìn)行過(guò)濾,但卻并沒(méi)有太多的coder關(guān)注php的內(nèi)置過(guò)濾函數(shù)。
過(guò)濾數(shù)據(jù)是我們經(jīng)常需要做的事情,但是很多功能豐富的PHP內(nèi)置過(guò)濾函數(shù)卻不為人知。使用類似filter_* 的PHP內(nèi)置函數(shù),我們幾乎可以處理所有的過(guò)濾任務(wù),包括數(shù)據(jù)類型驗(yàn)證/URL/email和IP地址驗(yàn)證/特殊字符處理等等。
過(guò)濾是一件復(fù)雜的事情,但是我相信joey的發(fā)現(xiàn)會(huì)給你很多啟發(fā),讓你認(rèn)識(shí)到PHP強(qiáng)大的過(guò)濾功能。
7. 使用PHP框架 – Josh Sharp
對(duì)于是否應(yīng)該使用Zend, CakePHP, Code Igniter, 或者 其他PHP框架,一直存在著很多爭(zhēng)議,但是在web開發(fā)者的心中,他們有自己衡量的標(biāo)準(zhǔn)。
Josh Sharp自己創(chuàng)建了一家提供面包和黃油服務(wù)的網(wǎng)站,因此他對(duì)于使用PHP框架來(lái)開發(fā)網(wǎng)站有一定的經(jīng)驗(yàn)。他認(rèn)為使用一個(gè)PHP框架來(lái)進(jìn)行項(xiàng)目開發(fā)(use a PHP framework ),可以有效地節(jié)省時(shí)間,并且減少出錯(cuò)的幾率。為什么?因?yàn)樗X(jué)得PHP實(shí)在是太好上手了。
PHP的易于使用有時(shí)候也有缺陷,因?yàn)椴⒉粐?yán)格的語(yǔ)法,經(jīng)常會(huì)導(dǎo)致很多錯(cuò)誤代碼的誕生。但如果使用一個(gè)PHP框架,出錯(cuò)的幾率就會(huì)大大減少。
PHP框架可以讓你的代碼結(jié)構(gòu)更加規(guī)范,并且節(jié)省大量時(shí)間。
8. 不要使用PHP框架 – Rasmus Lerdorf
與Josh的觀點(diǎn)恰恰相反,PHP的鼻祖Rasmus Lerdorf卻認(rèn)為不要使用PHP框架,為什么?因?yàn)椴换诳蚣艿腜HP性能更好。Rasmus在Drupalcon 2008的演講上,用“Hello World”的例子來(lái)對(duì)比了一些框架PHP和簡(jiǎn)單PHP之間的性能,結(jié)果顯示框架PHP的性能要遠(yuǎn)遠(yuǎn)落后。
9. 使用批處理 – Jack D. Herrington
Jack Herrington對(duì)PHP世界并不陌生, 并且為大名鼎鼎的IBM developerWorks貢獻(xiàn)過(guò)超過(guò)30篇的專搞, 同時(shí)出版過(guò)《PHP Hacks》的書,因此他是一個(gè)真正的專家。
Herrington推薦使用批處理和Cron來(lái)代替那些可以運(yùn)行在后臺(tái)的程序腳步,Web用戶并不愿意在線 等待你的處理過(guò)程,所以有些事情更適合放到后臺(tái)來(lái)處理。
誠(chéng)然,在某些情況下,這有點(diǎn)大材小用了,但是你可以清楚地看到,使用Cron, MySQL, PHP面向?qū)ο蟮姆椒ㄒ约癙ear::DB這些便捷的工具來(lái)創(chuàng)建一個(gè)批處理工具并不是一件復(fù)雜的事情。
Jack認(rèn)為使用cron, PHP和MySQL在后臺(tái)處理一些任務(wù),比起多進(jìn)程的業(yè)務(wù)邏輯要?jiǎng)澦愕枚唷?
兩種方法我都嘗試過(guò),我認(rèn)為Cron非常符合”Keep It Simple, Stupid” (KISS) 的原則,它讓后臺(tái)處理變得簡(jiǎn)單。與多進(jìn)程的業(yè)務(wù)邏輯相比,它沒(méi)有內(nèi)存溢出的風(fēng)險(xiǎn)。你可以創(chuàng)建一個(gè)簡(jiǎn)單的批處理腳本,并且在cron中運(yùn)行,這個(gè)腳本會(huì)定時(shí) 檢查是否有任務(wù)需要處理,處理完之后就會(huì)自動(dòng)退出,因此你不用擔(dān)心是否有進(jìn)程卡殼,或者陷入死循環(huán)。
10. 及時(shí)啟用錯(cuò)誤報(bào)告 – David Cummings
David Cummings有一個(gè)專門提供CMS軟件服務(wù)的公司 ,并且獲得過(guò)幾次獎(jiǎng) ,他有非常豐富的PHP開發(fā)經(jīng)驗(yàn)。David曾經(jīng)寫過(guò)《two PHP tips he wished he’d learned in the beginning》,其中一點(diǎn)就是:及時(shí)啟用錯(cuò)誤報(bào)告,這會(huì)節(jié)省大量的時(shí)間。
我告訴人們,**重要的事情就是 大程度地開啟PHP的錯(cuò)誤報(bào)告,為什么?因?yàn)镻HP可能會(huì)隱藏很多小問(wèn)題:
變量沒(méi)有預(yù)定義
在代碼片段中引用了不可用的變量
使用了未定義的常量這些因素看起來(lái)并不是什么大事,除非你在使用面向?qū)ο蟮姆椒ň帉懸恍╊悗?kù)。通常,關(guān)閉錯(cuò)誤報(bào)告將可能使你付出更大的成本來(lái)維護(hù)你的代碼。
錯(cuò)誤報(bào)告可以幫你輕易地找到代碼的問(wèn)題所在,如果錯(cuò)誤報(bào)告的等級(jí)夠高,細(xì)微的錯(cuò)誤都能被立即發(fā)現(xiàn),幫助你節(jié)省整體debug的時(shí)間。
作為當(dāng)今主流的開發(fā)語(yǔ)言,PHP集簡(jiǎn)單、免費(fèi)、高效等榮譽(yù)于一身。對(duì)于將來(lái)要在開發(fā)領(lǐng)域叱咤風(fēng)云的你來(lái)說(shuō),PHP全棧工程師將為你打開IT開發(fā)領(lǐng)域大門!
就業(yè)前景:目前,65%全球互聯(lián)網(wǎng)網(wǎng)站采用PHP技術(shù)。同時(shí),數(shù)據(jù)顯示,394家Alexa Toop500中國(guó)采用PHP技術(shù)。
市場(chǎng)需求:根據(jù)拉勾網(wǎng)顯示,2016年P(guān)HP相關(guān)職位42898個(gè),人才供比達(dá)到1:40。優(yōu)秀的PHP開發(fā)工程師更是稀缺。
就業(yè)薪資:目前,上海PHP全棧工程師平均工資10900元/月。1-2年項(xiàng)目經(jīng)驗(yàn)之后通常成為年薪20萬(wàn)以上的PHP全棧工程師。
PHP全棧工程師學(xué)什么?我們從零開始學(xué)習(xí)PHP全棧開發(fā),從PHP開發(fā)基礎(chǔ),到面向?qū)ο螅俚胶笃诘腜HP開發(fā)拓展高級(jí)應(yīng)用。輔助數(shù)據(jù)庫(kù)基礎(chǔ)以及HTML CSS等技能,全方位學(xué)習(xí)PHP全棧工程師的技術(shù)點(diǎn)!
PHP全棧工程師就業(yè)前景如何?
職友網(wǎng)數(shù)據(jù)顯示,北、上、廣與PHP相關(guān)的職位需求量約321220個(gè),PHP高端人才稀缺。上海PHP全棧工程師的平均月薪:10900元。累計(jì)1到2年工作經(jīng)驗(yàn)之后將達(dá)到年薪20萬(wàn)!
哪些人適合學(xué)?作為當(dāng)今主流的開發(fā)語(yǔ)言,PHP集簡(jiǎn)單、免費(fèi)、高效等榮譽(yù)于一身。北風(fēng)深諳行業(yè)之道,獨(dú)立研發(fā)PHP全棧工程師課程。不管您是在校大學(xué)生,職場(chǎng)小白還是相關(guān)行業(yè)從業(yè)者都適合學(xué)習(xí)這套課程!
陳 龍 兄弟連教育總監(jiān)級(jí)講師
開源軟件積極分子,國(guó)內(nèi)Linux技術(shù)大咖,從事Linux軟件研發(fā)培訓(xùn)10余年,精通LAMP平臺(tái)開發(fā),對(duì)C、PHP、Python有過(guò)深入研究,培訓(xùn)學(xué)員遍及騰訊、百度、新浪、金山等眾多互聯(lián)網(wǎng)企業(yè)。
變態(tài)嚴(yán)管:讓學(xué)習(xí)成為一種習(xí)慣
老師不認(rèn)真講課就是王八蛋 學(xué)生不認(rèn)真聽講就是耍流氓
億元級(jí)IT教育企業(yè),跟對(duì)大哥放肆贏!
兄弟連11年專注培訓(xùn)行業(yè),累計(jì)培養(yǎng)優(yōu)秀人才逾20萬(wàn)名,拼教學(xué)、論嚴(yán)管、談素養(yǎng)、比就業(yè),怕死就別來(lái)兄弟連!
1、課程體系每年升級(jí),定期微調(diào),講師、項(xiàng)目經(jīng)理均為專職,培養(yǎng)體系嚴(yán)謹(jǐn)、實(shí)用;大牛講師,學(xué)員打分體系,講師好不好你說(shuō)了算!
2、課上采用案例式教學(xué),通俗易懂,課下項(xiàng)目經(jīng)理一對(duì)一輔導(dǎo)強(qiáng)化訓(xùn)練,學(xué)與練交叉進(jìn)行強(qiáng)化記憶,你所要做的就是認(rèn)真聽,勤于問(wèn),樂(lè)于練。
3、兄弟連一直堅(jiān)持人手一機(jī),學(xué)員可以隨時(shí)在教室學(xué)習(xí),無(wú)論晚上11點(diǎn)還是凌晨4點(diǎn),你都將看到為自己的理想而埋頭苦學(xué)的兄弟姐妹。
4、變態(tài)嚴(yán)管,讓你破繭成蝶
“變態(tài)”的學(xué)習(xí)訓(xùn)練,因?yàn)閻?ài)你,所以嚴(yán)厲,我們要培養(yǎng)的是IT特種兵。
5、授之以魚更授之以漁
兄弟連創(chuàng)始人李超老師,也會(huì)親自授課,分享自己三十幾年的人生經(jīng)歷和經(jīng)驗(yàn)。
6、學(xué)不會(huì),無(wú)限期免費(fèi)重修;找工作,無(wú)限期免費(fèi)推薦。畢業(yè)后,你會(huì)發(fā)現(xiàn)JavaEE高手的圈子里到處都是你的人脈,讓你在職場(chǎng)更加如虎添翼。
想了解更多關(guān)于南京PHP培訓(xùn)資料,請(qǐng)咨詢:教育聯(lián)展網(wǎng)
更多關(guān)于南京PHP培訓(xùn)的信息: