PHP 7 中不(bù)要(yào)做(zuò)的(de)10件(ji÷σàn)事(shì)情
來(lái)源:創立工(gōng)作(zuò)室 作(zuò)¥&者:馮軍 發布時(shí)間(jiān):20 ↓20-07-11 14:18:26 閱讀(dú£≥) 1146 次
1、不(bù)要(yào)使用(yòng)mysql_函數(shù)
這(zhè)一(yī)天終于來(lái)了(le),從(có★★ng)此你(nǐ)不(bù)僅僅“不(bù)應該”使用(yòng)mysql_函數(♦ λshù)。PHP 7 已經把它們從(cóng)核心中全部移除了(le),也(yě)就(j≥★γiù)是(shì)說(shuō)你(nǐ)需要(yào)遷移到(dào)好(hǎo)得(de)多✘< (duō)的(de)mysqli_函數(s₹✘Ω®hù),或者更靈活的(de) PDO 實現(xiàn)。
2、不(bù)要(yào)編寫垃圾代碼
這(zhè)一(yī)條可(kě)能(néng€←)易于理(lǐ)解,但(dàn)是(sh"λ←ì)會(huì)變得(de)越來(lái)越重要•ε ₩(yào),因為(wèi) PHP 7 的(de)速度提升可(kě)能(∏₹≠néng)會(huì)隐藏你(nǐ)的(de)一(yī)些(xiē)問(wèn)£€題。不(bù)要(yào)僅僅滿足于你(nǐ)的(de∏£→)站(zhàn)點速度,因為(wèi)遷↓↕移到(dào) PHP 7 才讓它變快(↓÷kuài)。
為(wèi)了(le)理(lǐ)解速度有(yǒu)多(duō)重要(↔•₹yào),以及如(rú)何把事(shì)情做(zuò)得(de)更好(hǎo),請(©≠qǐng)看(kàn)一(yī)看(kàn)我們的(de)文(wén)章(zhāng)速度優φ€化(huà)入門(mén)指南(nán)。
作(zuò)為(wèi)一(yī)名開(kāi)發者,你(nǐ)應該♦λ總是(shì)确保按需加載腳本,盡可(k↑εαě)能(néng)連接它們,編寫高(gāo)效的®"≈(de)數(shù)據庫查詢,盡可(kě)能(néng)使用(yòng)緩存,以及其δ'它。
3、不(bù)要(yào)在文(wén)件(π≈δ↑jiàn)末尾使用(yòng) PHP ★β閉合标簽
你(nǐ)可(kě)以看(kàn)一(yī)看(kàn),當一(yī)個(gè)文(wλ☆ γén)件(jiàn)以 PHP 代碼結尾時(÷≥Ωπshí),WordPress 多(duō)數(shù)核心代碼都(dōu)把末尾的(de) PHPπ↑ 标簽去(qù)掉了(le)。實際上(shàng),Zγγφend 框架特别禁止了(le)它。PHP 并不(bù)需要(yào)文(wén)件(•★↔jiàn)末尾的(de)閉合标簽,并且我們可(kě)以通(tōng)過去(qù)掉它來¶♦(lái)保證不(bù)會(huì)在後面添加任>★£✘何的(de)空(kōng)白(bái)字符。
4、不(bù)要(yào)做(zuò)不(bù)&>必要(yào)的(de)引用(yòng)傳遞
我個(gè)人(rén)不(bù)喜歡引用(yòng)傳遞。我知(zhī)道 <(dào)有(yǒu)時(shí)候它很(hěn)實用(yòng),但(dàn)是(sh♠♦εì)其它情況下(xià)它使代碼變得(de)難懂(dǒng),并且更難預測♥♣結果。
據說(shuō)一(yī)些(xiē)人<∞♠(rén)認為(wèi)它使代碼運行(xíng)更快(kuài),但(dàn)是(shì)÷₹§δ根據一(yī)些(xiē) PHP 高(gā☆$®o)級程序員(yuán)所說(shuō),這(zhè)并不↕♠§≥(bù)正确。
說(shuō)明(míng)引用(yòng)為(wèi)什(shén)麽不(bù)好(hǎo$¶ )的(de)一(yī)個(gè)例子(zǐ)是(shì),PHP 內(nè'♣¥i)建了(le)shuffle()和(hé)sort()。它們修改原始數(shù)組,而不(™γ' bù)是(shì)返回處理(lǐ)後的(de)數(δ'shù)組,這(zhè)很(hěn)不(bù)合邏輯。
5、不(bù)要(yào)在循環中執行(xíng)查詢
在循環中執行(xíng)查詢非常浪費(fèi)。它給你(nǐ)的(de)系統施加不(bù↔↓)必要(yào)的(de)壓力,并且可(kě)能(nén&✔g)能(néng)夠在循環外(wài)部更快(kuài)獲得(de)™↕→相(xiàng)同結果。當我遇到(dào)需要(yào)這(zhè)樣的( π∏de)情況時(shí),我通(tōng)常會(huì)使用(yòng)兩個(gè$")分(fēn)離(lí)的(de)查詢來(lái)解決問(wèn)題,我會(∑↔≈εhuì)使用(yòng)它們來(lái)構建數(shù)據數(shù)組。之後我會(huì)遍曆數✔→®≈(shù)組,并不(bù)需要(yào)在這(zhè)∑®個(gè)過程中執行(xíng)查詢。
由于 WordPress 适用(yòng)于這(zhè)裡(lǐ),它可(kě)能(néng)有₹"♦(yǒu)一(yī)些(xiē)例外(wà→→★i)。雖然get_post_meta() 會(huì)從(cóng)數(shù)據庫獲取大(dà←↑≤)量數(shù)據,如(rú)果你(nǐ)正在遍曆某個(gè)特殊博文(wén)的(de)元數(s↔βhù)據你(nǐ)可(kě)以在循環中使用(yòng)它。這(zhè)是(shì)因為 ✘βε(wèi)當你(nǐ)第一(yī)次調用(yòng)它的(de)時(s™$'hí)候,WordPress實際上(shàng)會(huì)獲取所有(yǒu)元÷✘¶數(shù)據并緩存它們。後續的(de)調用(yòng)使用(yòng)這(zhè)些(x∞♦≈ iē)緩存數(shù)據,沒有(yǒu)數(shù)據庫的(de)調用(yòng)。
弄懂(dǒng)這(zhè)些(xiē)的(deσ₹)最佳方式是(shì)閱讀(dú)函數(♦₽shù)文(wén)檔,以及使用(yòng)類似 Query Monitor 的(de)工(¥♦βgōng)具。
6、不(bù)要(yào)在 SQL 查詢中使用(yòng)*
當然,這(zhè)個(gè)更像 MySQL 的(de)≠€問(wèn)題,但(dàn)是(shì)我們習(xí)慣在 PHP 中編₽<寫 SQL 代碼,所以都(dōu)差不(bù)多(duō)。無論如(rú)何,如(↔≤rú)果可(kě)以避免的(de)話(huà),不(bù)要(yào)在 SQL∞☆ 查詢裡(lǐ)使用(yòng)通(tōng✘₩≠©)配符,尤其是(shì)數(shù)據庫有(y↓πǒu)很(hěn)多(duō)列的(de)時(shí)候。
你(nǐ)應該明(míng)确指定需要(yào± &)哪些(xiē)行(xíng),并且僅僅獲取它們。這(zhè)有(yǒ✘∑u)助于減少(shǎo)所用(yòng)資源,保護數(shù)據,以及讓事(₩£$&shì)情變得(de)盡可(kě)能(néng)清晰。
對(duì)于 SQL,你(nǐ)需要(yào)了(le)解所有(yǒu)可(kě)用(yòng) €λ'的(de)函數(shù),并且盡可(kě)能(néng)測試其速度。在計(jìε✘&₹)算(suàn)均值、求和(hé)或計(jì)算(s✘₽uàn)類似數(shù)值時(shí),要(yào)使用(yòngπ>₽) SQL 函數(shù)而不(bù)是(shì) ↔PHP 函數(shù)。如(rú)果你(nǐ)不(bù)确定♠≠<某個(gè)查詢的(de)速度,測試它并且嘗試一(π>yī)些(xiē)其它的(de)編譯 -- 之後使用(yòng)最好(hǎo)的(d↑¥σe)那(nà)個(gè)。
7、不(bù)要(yào)信任用(yòng)戶輸入
信任用(yòng)戶輸入是(shì)不(bù)明(mí≈↑↕ng)智的(de)。始終校(xiào)驗、過濾、轉義、檢×♣≠≈查并留好(hǎo)退路(lù)。用(yòng)戶數(shù)據存在三個(gè)問(wèn)題:我α↔<™們開(kāi)發者并沒有(yǒu)考慮每種可(•φΩkě)能(néng)性,它通(tōng)常不(bù)正确,以及它可(kě)能(néng)₩ 是(shì)蓄意破壞。
經過周密考慮的(de)系統可(kě)以防護這(zhè)些(xiē)威脅。要(yào)确保≥♦♠使用(yòng)類似filter_var(↔∑♦")的(de)內(nèi)建函數(shù)檢查适當的(de)值,以及在處理(lǐ)數(≥∞↔shù)據庫時(shí)轉義(或預編譯)。
WordPress 擁有(yǒu)一(yī)些(xiē)函數(shù)來(lái)解決問(wè'∑≈n)題。詳見(jiàn)文(wén)章(zhāng)校→↑(xiào)驗、轉義和(hé)過濾用(yòng)戶數(shù)據。
8、不(bù)要(yào)故作(zuò)聰明(míng)
你(nǐ)的(de)目标應該是(shì)編寫優雅的(de)代碼,來(lái)更清'晰地(dì)表達你(nǐ)的(de)意圖。你(nǐ)可(kě)能(néng™♠≤)能(néng)夠通(tōng)過将任何東(dōng)西(xī)縮短(duǎn)為↓Ω£∑(wèi)一(yī)個(gè)單詞的(de)變₩£δ量,使用(yòng)多(duō)層的(de)三元邏輯,以及•≠其它手段,從(cóng)每個(gè)頁面中優化(huà) 0.01 秒(miǎo)。但(dà €n)這(zhè)隻會(huì)給你(nǐ)和(hé)你(n↑$'ǐ)周圍的(de)人(rén)産生(shēng)大(dà)麻煩。
合理(lǐ)命名變量,為(wèi)代碼編寫文(wén)♦ φ₩檔,優先選擇清晰而不(bù)是(shì)簡潔。甚至還(hái)可(kě)以更±♣好(hǎo),使用(yòng)标準的(de)面向對(duì)象代碼,它本身(sh ♠ēn)或多(duō)或少(shǎo)就(jiù )是(shì)文(wén)檔,不(bù)需要(yào¶π )一(yī)大(dà)堆內(nèi)聯數(shù)值。
9、不(bù)要(yào)重新發明(míng)輪子(zǐ)
PHP 到(dào)現(xiàn)在為(wèi)止有(yǒu)很(hěn)長(cháng↓"↑)時(shí)間(jiān)了(le),網站(zhàn)被造出來(lái)£$₽的(de)時(shí)間(jiān)更長(cháng)。很(hěn)可(kě)能≤¥(néng)無論你(nǐ)需要(yào)造出什(shén)麽,一(yī)些(xiēγ≤)人(rén)之前早就(jiù)造出來(lái)了>₹•₽(le)。不(bù)要(yào)害怕向他(tā)人(rén)尋求Ω"支持,Github是(shì)你(nǐ)的(de)好(hǎo)朋(p★πéng)友(yǒu),Composer也(yě)是(shì),Packagist←♥≤也(yě)是(shì)。
從(cóng)日(rì)志(zhì)工(gōng)具到(d↔φào)調色工(gōng)具,從(cóng)性能(néng)分(fēn)析器(λ&δ✔qì)到(dào)單元測試框架,從(cóng) Mailchimp A₽&PI 到(dào) Twitter Bootstrap,每個(gè)東(dōng₽×)西(xī)都(dōu)可(kě)以通(tōng)過∏β≈按下(xià)按鍵(或者敲下(xià)命令)來(lái)獲取,使用(yòng)它們吧(ba)≈✔!
10、不(bù)要(yào)忽略其它語言
如(rú)果你(nǐ)是(shì)個(gè) PHP 程序員(yuán),現(xià≈£ 'n)在有(yǒu)個(gè)好(hǎo)機(jī)ε÷會(huì)去(qù)至少(shǎo)了(le)解 HTML、CSS、Jav♦∑aScript 和(hé) MySQL。當你(nǐ)能(néng)夠更好(hǎo)地(dì)處理→λ<(lǐ)這(zhè)些(xiē)語言時(shí≤),就(jiù)是(shì)重新學習(xí) JavaScript 的(de)時(s₩•♠₹hí)機(jī)了(le)。JavaScript 并≠↕™δ不(bù)是(shì) jQuery,你'♠(nǐ)應該合理(lǐ)地(dì)學習(xí) JavaScript↓♥ 來(lái)更高(gāo)效地(dì)使用(yòng)它。
我也(yě)打算(suàn)向你(nǐ)推薦學習(xβ♠í)面向對(duì)象的(de) PHP,它可(kě)以節省時(shí)間(jiān),并且在✔'≈代碼規模更大(dà)時(shí)會(huì)變得(de)更好(hǎo)。對(duì)于類似 C ↑# 和(hé) Java 的(de)語言,在你(nǐ)了(le)解&₹ OOP 之後,它們也(yě)更易于理(lǐ)解。
通(tōng)過了(le)解包管理(lǐ)器(qì)、構建腳本、CoffeeScript、LESΩπ♠S、SASS、YAML 、腳本引擎和(hé)其它強大(dà)的(de)工(gΩ≤&ōng)具來(lái)擴展你(nǐ)的(de)知(zhī)識面。我強烈↕≥×向你(nǐ)推薦看(kàn)一(yī)看(kàn)其它框架,尤其是(shì) L&πaravel。
當你(nǐ)使用(yòng)它們出色完成任務時(shí),學習(xí) Ruby、RoR、δ∑≥πAndroid、iPhone 和(hé) Windows Pho≈φne 應用(yòng)開(kāi)發如(rú)何?你(✘↕✔nǐ)可(kě)能(néng)會(huì)認為♣€ ♥(wèi)這(zhè)毫無意義,因為(wèi)它們在你(nǐ)的(de)舒适區(qū)和(hé↕≥)工(gōng)作(zuò)所需範圍之外(w♦εài),但(dàn)是(shì)這(zhè)就(jiù)♠✔♣是(shì)它們的(de)意義。每種語言都(dōu)有(yǒu)一(yī)些(xiē)要(§yào)學習(xí)的(de)實用(yòng)的(d←<•e)東(dōng)西(xī),以及從(cóng)沒碰到(dào)的(de)新知(zhī)ελ®識。所有(yǒu) PHP 頂級開(kā♦→&φi)發者都(dōu)懂(dǒng)得(de)很(hěn)多(duō)其它$→編程語言,這(zhè)并非偶然。
這(zhè)一(yī)天終于來(lái)了(le),從(có★★ng)此你(nǐ)不(bù)僅僅“不(bù)應該”使用(yòng)mysql_函數(♦ λshù)。PHP 7 已經把它們從(cóng)核心中全部移除了(le),也(yě)就(j≥★γiù)是(shì)說(shuō)你(nǐ)需要(yào)遷移到(dào)好(hǎo)得(de)多✘< (duō)的(de)mysqli_函數(s₹✘Ω®hù),或者更靈活的(de) PDO 實現(xiàn)。
2、不(bù)要(yào)編寫垃圾代碼
這(zhè)一(yī)條可(kě)能(néng€←)易于理(lǐ)解,但(dàn)是(sh"λ←ì)會(huì)變得(de)越來(lái)越重要•ε ₩(yào),因為(wèi) PHP 7 的(de)速度提升可(kě)能(∏₹≠néng)會(huì)隐藏你(nǐ)的(de)一(yī)些(xiē)問(wèn)£€題。不(bù)要(yào)僅僅滿足于你(nǐ)的(de∏£→)站(zhàn)點速度,因為(wèi)遷↓↕移到(dào) PHP 7 才讓它變快(↓÷kuài)。
為(wèi)了(le)理(lǐ)解速度有(yǒu)多(duō)重要(↔•₹yào),以及如(rú)何把事(shì)情做(zuò)得(de)更好(hǎo),請(©≠qǐng)看(kàn)一(yī)看(kàn)我們的(de)文(wén)章(zhāng)速度優φ€化(huà)入門(mén)指南(nán)。
作(zuò)為(wèi)一(yī)名開(kāi)發者,你(nǐ)應該♦λ總是(shì)确保按需加載腳本,盡可(k↑εαě)能(néng)連接它們,編寫高(gāo)效的®"≈(de)數(shù)據庫查詢,盡可(kě)能(néng)使用(yòng)緩存,以及其δ'它。
3、不(bù)要(yào)在文(wén)件(π≈δ↑jiàn)末尾使用(yòng) PHP ★β閉合标簽
你(nǐ)可(kě)以看(kàn)一(yī)看(kàn),當一(yī)個(gè)文(wλ☆ γén)件(jiàn)以 PHP 代碼結尾時(÷≥Ωπshí),WordPress 多(duō)數(shù)核心代碼都(dōu)把末尾的(de) PHPπ↑ 标簽去(qù)掉了(le)。實際上(shàng),Zγγφend 框架特别禁止了(le)它。PHP 并不(bù)需要(yào)文(wén)件(•★↔jiàn)末尾的(de)閉合标簽,并且我們可(kě)以通(tōng)過去(qù)掉它來¶♦(lái)保證不(bù)會(huì)在後面添加任>★£✘何的(de)空(kōng)白(bái)字符。
4、不(bù)要(yào)做(zuò)不(bù)&>必要(yào)的(de)引用(yòng)傳遞
我個(gè)人(rén)不(bù)喜歡引用(yòng)傳遞。我知(zhī)道 <(dào)有(yǒu)時(shí)候它很(hěn)實用(yòng),但(dàn)是(sh♠♦εì)其它情況下(xià)它使代碼變得(de)難懂(dǒng),并且更難預測♥♣結果。
據說(shuō)一(yī)些(xiē)人<∞♠(rén)認為(wèi)它使代碼運行(xíng)更快(kuài),但(dàn)是(shì)÷₹§δ根據一(yī)些(xiē) PHP 高(gā☆$®o)級程序員(yuán)所說(shuō),這(zhè)并不↕♠§≥(bù)正确。
說(shuō)明(míng)引用(yòng)為(wèi)什(shén)麽不(bù)好(hǎo$¶ )的(de)一(yī)個(gè)例子(zǐ)是(shì),PHP 內(nè'♣¥i)建了(le)shuffle()和(hé)sort()。它們修改原始數(shù)組,而不(™γ' bù)是(shì)返回處理(lǐ)後的(de)數(δ'shù)組,這(zhè)很(hěn)不(bù)合邏輯。
5、不(bù)要(yào)在循環中執行(xíng)查詢
在循環中執行(xíng)查詢非常浪費(fèi)。它給你(nǐ)的(de)系統施加不(bù↔↓)必要(yào)的(de)壓力,并且可(kě)能(nén&✔g)能(néng)夠在循環外(wài)部更快(kuài)獲得(de)™↕→相(xiàng)同結果。當我遇到(dào)需要(yào)這(zhè)樣的( π∏de)情況時(shí),我通(tōng)常會(huì)使用(yòng)兩個(gè$")分(fēn)離(lí)的(de)查詢來(lái)解決問(wèn)題,我會(∑↔≈εhuì)使用(yòng)它們來(lái)構建數(shù)據數(shù)組。之後我會(huì)遍曆數✔→®≈(shù)組,并不(bù)需要(yào)在這(zhè)∑®個(gè)過程中執行(xíng)查詢。
由于 WordPress 适用(yòng)于這(zhè)裡(lǐ),它可(kě)能(néng)有₹"♦(yǒu)一(yī)些(xiē)例外(wà→→★i)。雖然get_post_meta() 會(huì)從(cóng)數(shù)據庫獲取大(dà←↑≤)量數(shù)據,如(rú)果你(nǐ)正在遍曆某個(gè)特殊博文(wén)的(de)元數(s↔βhù)據你(nǐ)可(kě)以在循環中使用(yòng)它。這(zhè)是(shì)因為 ✘βε(wèi)當你(nǐ)第一(yī)次調用(yòng)它的(de)時(s™$'hí)候,WordPress實際上(shàng)會(huì)獲取所有(yǒu)元÷✘¶數(shù)據并緩存它們。後續的(de)調用(yòng)使用(yòng)這(zhè)些(x∞♦≈ iē)緩存數(shù)據,沒有(yǒu)數(shù)據庫的(de)調用(yòng)。
弄懂(dǒng)這(zhè)些(xiē)的(deσ₹)最佳方式是(shì)閱讀(dú)函數(♦₽shù)文(wén)檔,以及使用(yòng)類似 Query Monitor 的(de)工(¥♦βgōng)具。
6、不(bù)要(yào)在 SQL 查詢中使用(yòng)*
當然,這(zhè)個(gè)更像 MySQL 的(de)≠€問(wèn)題,但(dàn)是(shì)我們習(xí)慣在 PHP 中編₽<寫 SQL 代碼,所以都(dōu)差不(bù)多(duō)。無論如(rú)何,如(↔≤rú)果可(kě)以避免的(de)話(huà),不(bù)要(yào)在 SQL∞☆ 查詢裡(lǐ)使用(yòng)通(tōng✘₩≠©)配符,尤其是(shì)數(shù)據庫有(y↓πǒu)很(hěn)多(duō)列的(de)時(shí)候。
你(nǐ)應該明(míng)确指定需要(yào± &)哪些(xiē)行(xíng),并且僅僅獲取它們。這(zhè)有(yǒ✘∑u)助于減少(shǎo)所用(yòng)資源,保護數(shù)據,以及讓事(₩£$&shì)情變得(de)盡可(kě)能(néng)清晰。
對(duì)于 SQL,你(nǐ)需要(yào)了(le)解所有(yǒu)可(kě)用(yòng) €λ'的(de)函數(shù),并且盡可(kě)能(néng)測試其速度。在計(jìε✘&₹)算(suàn)均值、求和(hé)或計(jì)算(s✘₽uàn)類似數(shù)值時(shí),要(yào)使用(yòngπ>₽) SQL 函數(shù)而不(bù)是(shì) ↔PHP 函數(shù)。如(rú)果你(nǐ)不(bù)确定♠≠<某個(gè)查詢的(de)速度,測試它并且嘗試一(π>yī)些(xiē)其它的(de)編譯 -- 之後使用(yòng)最好(hǎo)的(d↑¥σe)那(nà)個(gè)。
7、不(bù)要(yào)信任用(yòng)戶輸入
信任用(yòng)戶輸入是(shì)不(bù)明(mí≈↑↕ng)智的(de)。始終校(xiào)驗、過濾、轉義、檢×♣≠≈查并留好(hǎo)退路(lù)。用(yòng)戶數(shù)據存在三個(gè)問(wèn)題:我α↔<™們開(kāi)發者并沒有(yǒu)考慮每種可(•φΩkě)能(néng)性,它通(tōng)常不(bù)正确,以及它可(kě)能(néng)₩ 是(shì)蓄意破壞。
經過周密考慮的(de)系統可(kě)以防護這(zhè)些(xiē)威脅。要(yào)确保≥♦♠使用(yòng)類似filter_var(↔∑♦")的(de)內(nèi)建函數(shù)檢查适當的(de)值,以及在處理(lǐ)數(≥∞↔shù)據庫時(shí)轉義(或預編譯)。
WordPress 擁有(yǒu)一(yī)些(xiē)函數(shù)來(lái)解決問(wè'∑≈n)題。詳見(jiàn)文(wén)章(zhāng)校→↑(xiào)驗、轉義和(hé)過濾用(yòng)戶數(shù)據。
8、不(bù)要(yào)故作(zuò)聰明(míng)
你(nǐ)的(de)目标應該是(shì)編寫優雅的(de)代碼,來(lái)更清'晰地(dì)表達你(nǐ)的(de)意圖。你(nǐ)可(kě)能(néng™♠≤)能(néng)夠通(tōng)過将任何東(dōng)西(xī)縮短(duǎn)為↓Ω£∑(wèi)一(yī)個(gè)單詞的(de)變₩£δ量,使用(yòng)多(duō)層的(de)三元邏輯,以及•≠其它手段,從(cóng)每個(gè)頁面中優化(huà) 0.01 秒(miǎo)。但(dà €n)這(zhè)隻會(huì)給你(nǐ)和(hé)你(n↑$'ǐ)周圍的(de)人(rén)産生(shēng)大(dà)麻煩。
合理(lǐ)命名變量,為(wèi)代碼編寫文(wén)♦ φ₩檔,優先選擇清晰而不(bù)是(shì)簡潔。甚至還(hái)可(kě)以更±♣好(hǎo),使用(yòng)标準的(de)面向對(duì)象代碼,它本身(sh ♠ēn)或多(duō)或少(shǎo)就(jiù )是(shì)文(wén)檔,不(bù)需要(yào¶π )一(yī)大(dà)堆內(nèi)聯數(shù)值。
9、不(bù)要(yào)重新發明(míng)輪子(zǐ)
PHP 到(dào)現(xiàn)在為(wèi)止有(yǒu)很(hěn)長(cháng↓"↑)時(shí)間(jiān)了(le),網站(zhàn)被造出來(lái)£$₽的(de)時(shí)間(jiān)更長(cháng)。很(hěn)可(kě)能≤¥(néng)無論你(nǐ)需要(yào)造出什(shén)麽,一(yī)些(xiēγ≤)人(rén)之前早就(jiù)造出來(lái)了>₹•₽(le)。不(bù)要(yào)害怕向他(tā)人(rén)尋求Ω"支持,Github是(shì)你(nǐ)的(de)好(hǎo)朋(p★πéng)友(yǒu),Composer也(yě)是(shì),Packagist←♥≤也(yě)是(shì)。
從(cóng)日(rì)志(zhì)工(gōng)具到(d↔φào)調色工(gōng)具,從(cóng)性能(néng)分(fēn)析器(λ&δ✔qì)到(dào)單元測試框架,從(cóng) Mailchimp A₽&PI 到(dào) Twitter Bootstrap,每個(gè)東(dōng₽×)西(xī)都(dōu)可(kě)以通(tōng)過∏β≈按下(xià)按鍵(或者敲下(xià)命令)來(lái)獲取,使用(yòng)它們吧(ba)≈✔!
10、不(bù)要(yào)忽略其它語言
如(rú)果你(nǐ)是(shì)個(gè) PHP 程序員(yuán),現(xià≈£ 'n)在有(yǒu)個(gè)好(hǎo)機(jī)ε÷會(huì)去(qù)至少(shǎo)了(le)解 HTML、CSS、Jav♦∑aScript 和(hé) MySQL。當你(nǐ)能(néng)夠更好(hǎo)地(dì)處理→λ<(lǐ)這(zhè)些(xiē)語言時(shí≤),就(jiù)是(shì)重新學習(xí) JavaScript 的(de)時(s₩•♠₹hí)機(jī)了(le)。JavaScript 并≠↕™δ不(bù)是(shì) jQuery,你'♠(nǐ)應該合理(lǐ)地(dì)學習(xí) JavaScript↓♥ 來(lái)更高(gāo)效地(dì)使用(yòng)它。
我也(yě)打算(suàn)向你(nǐ)推薦學習(xβ♠í)面向對(duì)象的(de) PHP,它可(kě)以節省時(shí)間(jiān),并且在✔'≈代碼規模更大(dà)時(shí)會(huì)變得(de)更好(hǎo)。對(duì)于類似 C ↑# 和(hé) Java 的(de)語言,在你(nǐ)了(le)解&₹ OOP 之後,它們也(yě)更易于理(lǐ)解。
通(tōng)過了(le)解包管理(lǐ)器(qì)、構建腳本、CoffeeScript、LESΩπ♠S、SASS、YAML 、腳本引擎和(hé)其它強大(dà)的(de)工(gΩ≤&ōng)具來(lái)擴展你(nǐ)的(de)知(zhī)識面。我強烈↕≥×向你(nǐ)推薦看(kàn)一(yī)看(kàn)其它框架,尤其是(shì) L&πaravel。
當你(nǐ)使用(yòng)它們出色完成任務時(shí),學習(xí) Ruby、RoR、δ∑≥πAndroid、iPhone 和(hé) Windows Pho≈φne 應用(yòng)開(kāi)發如(rú)何?你(✘↕✔nǐ)可(kě)能(néng)會(huì)認為♣€ ♥(wèi)這(zhè)毫無意義,因為(wèi)它們在你(nǐ)的(de)舒适區(qū)和(hé↕≥)工(gōng)作(zuò)所需範圍之外(w♦εài),但(dàn)是(shì)這(zhè)就(jiù)♠✔♣是(shì)它們的(de)意義。每種語言都(dōu)有(yǒu)一(yī)些(xiē)要(§yào)學習(xí)的(de)實用(yòng)的(d←<•e)東(dōng)西(xī),以及從(cóng)沒碰到(dào)的(de)新知(zhī)ελ®識。所有(yǒu) PHP 頂級開(kā♦→&φi)發者都(dōu)懂(dǒng)得(de)很(hěn)多(duō)其它$→編程語言,這(zhè)并非偶然。
- 上(shàng)一(yī)篇:搭建簡單的(de)PHP運行(xíng)環境
- 下(xià)一(yī)篇:2020最新整理(lǐ)PHP面試題附答σ←(dá)案