日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP迸发,PHP 开发 「十宗罪」

發(fā)布時(shí)間:2023/12/10 php 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP迸发,PHP 开发 「十宗罪」 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

本文翻譯自 10 Things Not To Do In PHP 7。全文列出了十條我們?cè)?PHP7 開發(fā)中應(yīng)注意避免的 反模式,覺得很有參考意義故翻譯成中文供大家學(xué)習(xí)借鑒。

1. 不要使用 mysql_ 函數(shù)

在 PHP7 中,mysql_ 系列函數(shù)已經(jīng)完全從核心代碼中移除,你應(yīng)該用改進(jìn)過的 mysqli_ 系列函數(shù)(mysql improvement)來替換 mysql_ 代碼。或者你也可以使用更具靈活性的 PDO 來重構(gòu)你的程序。

2.不要寫慢代碼

PHP 7 中速度顯著的增加可能會(huì)使你忽略一些糟糕的拖慢程序速度的代碼,不要因?yàn)榍袚Q到 PHP 7 了而對(duì)這些問題漠不關(guān)心。

要了解網(wǎng)站速度的重要性以及如何讓網(wǎng)站速度變得更快,請(qǐng)閱讀 Beginners’ guide to speed optimization 以改進(jìn)你的代碼。

作為開發(fā)人員,你應(yīng)該始終確保只在需要時(shí)才加載腳本,編寫高效的數(shù)據(jù)庫查詢,盡可能使用緩存來加速訪問等等。

3.不要在文件末尾添加 PHP 閉合標(biāo)簽

如果你閱讀過 wordpress 源碼,你就會(huì)發(fā)現(xiàn)大部分 PHP 文件末尾都省略了 PHP 閉合標(biāo)簽。而在 Zend 框架中特別 指明 禁止在文件末尾使用閉合標(biāo)簽。PHP 并不強(qiáng)制要求你添加閉合標(biāo)簽,在文件末尾省略它可以確保不會(huì)無意中添加額外的空格。

4.不要使用傳遞引用

我個(gè)人不喜歡使用傳遞引用。但在某些情況下傳遞引用是十分有用的,可是在大多數(shù)情況下,它會(huì)使代碼更難閱讀和理解,而且會(huì)出現(xiàn)難以預(yù)料結(jié)果。有些人認(rèn)為使用引用可以使他們的代碼更快,但實(shí)際上這是錯(cuò)誤的。

在 PHP 中使用傳遞引用的一個(gè)糟糕的例子可能就是 shuffle() sort() 函數(shù)。它們不是返回一個(gè)隨機(jī)排序或排序過的數(shù)組,而是修改原來的數(shù)組,這在我看來是完全不合邏輯和反人類的。

5.不要在循環(huán)中執(zhí)行查詢

在循環(huán)中執(zhí)行數(shù)據(jù)庫查詢完全就是在浪費(fèi)資源。它會(huì)給服務(wù)器帶來不必要的壓力(譯者注:循環(huán)中執(zhí)行查詢會(huì)導(dǎo)致 N+1 問題),并且你完全可以在循環(huán)之外得到相同的結(jié)果。當(dāng)遇到這種情況時(shí),你往往可以用兩個(gè)單獨(dú)的查詢來得到一個(gè)結(jié)果數(shù)組,并對(duì)結(jié)果數(shù)組進(jìn)行循環(huán)獲取數(shù)據(jù),并不需要在循環(huán)中執(zhí)行查詢。

解決這個(gè)問題的最好方法就是閱讀函數(shù)文檔并監(jiān)控查詢語句是否出現(xiàn) N+1 問題。

6.不要在 SQL 查詢中使用 *

在任何情況下,特別是數(shù)據(jù)庫中包含大量列時(shí),如果可以避免使用通配符,則不要在 SQL 查詢語句中使用通配符。指明你想獲取的數(shù)據(jù)列,能最大限度地減少資源的使用,保護(hù)你的數(shù)據(jù)并使代碼邏輯清晰。

在寫 SQL 語句時(shí),盡量測(cè)試所有可能的實(shí)現(xiàn)并比較它們的速度。例如,使用 SQL 函數(shù)來計(jì)算平均值,總和而不是使用 PHP 函數(shù)來實(shí)現(xiàn)。

7.不要信任用戶的輸入

千萬不要相信任何用戶的輸入!對(duì)用戶所有的輸入你都需要過濾,轉(zhuǎn)義,檢查。用戶的輸入很有可能是某些居心莫測(cè)的人惡意輸入的帶有 SQL 注入,XSS 惡意攻擊的代碼。

確保在使用數(shù)據(jù)庫時(shí),使用像 filter_var() 這樣的內(nèi)置函數(shù)來檢查以及轉(zhuǎn)義用戶輸入的值。

8.不要聰明反被聰明誤

你的目標(biāo)應(yīng)該是寫出優(yōu)雅的代碼,并清晰的表達(dá)你的意圖,而不是炫耀你寫代碼的能力。你可以通過使用多級(jí)三元表達(dá)式或其他一些特別的技巧方法如通過將所有變量名變?yōu)閱巫帜?#xff0c;從而使每個(gè)頁面的加載時(shí)間減少 0.01秒。但日后你的代碼將使你和你的同事花費(fèi)數(shù)倍的時(shí)間去理解和維護(hù)。

恰當(dāng)?shù)拿愕淖兞?#xff0c;為每一行必要的代碼寫明注釋,使用清晰的邏輯和面向?qū)ο蠓绞綍鴮懘a。今天你花費(fèi)在這些上面 “不必要” 的時(shí)間,在將來必將節(jié)省你數(shù)倍的維護(hù)時(shí)間并使你倍加感恩。

9.不要造輪子

PHP 已經(jīng)有很長的歷史了。在大多數(shù)情況下,你的需求往往都已經(jīng)有人做出了實(shí)現(xiàn)。不要嘗試去造輪子,造輪子前請(qǐng)先在 Github,Composer,Packagist 上搜索是否已經(jīng)有相關(guān)的包。

從日志記錄到取色器,從性能檢測(cè)到單元測(cè)試,從微信接口到短信發(fā)送 API,只需要你閱讀這些包的文檔并簡(jiǎn)單的寫幾行代碼就能完成需求,而不必大費(fèi)周折自己寫一個(gè)輪子。

10.不要忽略其他語言

雖然你是一個(gè) PHPer,但你至少也要了解HTML,CSS,Javascript和 MySQL 的基本知識(shí)。

我也建議你學(xué)習(xí)有關(guān)面向?qū)ο蟮闹R(shí),它會(huì)使你的代碼更優(yōu)雅更賦予表達(dá)力。它也會(huì)為你打開學(xué)習(xí) C#, Java 這類面向?qū)ο笳Z言的大門。

學(xué)習(xí)包管理器,構(gòu)建腳本,Coffeescript,LESS,SASS,YAML,模板引擎和其他工具來擴(kuò)大你的知識(shí)面。衷心推薦你看看其他框架,特別是Ruby on Rails。

當(dāng)你對(duì)這些知識(shí)都比較熟悉,那你也可以考慮考慮學(xué)習(xí)Typescript,Rust,Kotlin,Golang。

你往往會(huì)認(rèn)為學(xué)習(xí)一門其他語言沒有必要,這是因?yàn)樵诠ぷ髦杏貌坏蕉姨隽四愕氖孢m區(qū)。但是每種語言都有它獨(dú)特的東西值得你學(xué)習(xí),這些不同思維編程語言的碰撞會(huì)讓你對(duì)編程有更深的體會(huì)和感悟,并能讓你在日后的編程中迸發(fā)出不一樣的火花。所有頂尖 PHP 開發(fā)者絕對(duì)不會(huì)只熟悉 PHP 這一門語言。跳出你的舒適區(qū),打破你的偏見,帶著開放的眼光去看看外面的編程世界。

(譯者注:這一點(diǎn)感受很深。PHPer 被黑的很慘的一個(gè)重要的原因就是很多 PHPer 基礎(chǔ)并不是很好,往往只局限于PHP 這一門語言。建議大家有空多補(bǔ)補(bǔ)計(jì)算機(jī)相關(guān)基礎(chǔ),并多學(xué)習(xí)學(xué)習(xí)其他語言。并不止是職業(yè)上的考慮,扎實(shí)的基礎(chǔ)和開闊的眼界往往能讓你寫出更好的代碼。Laravel 這個(gè)框架也是作者借鑒了許多別的語言的精粹才寫成的。他山之石,可以攻玉,共勉之!)

本作品采用《CC 協(xié)議》,轉(zhuǎn)載必須注明作者和本文鏈接

總結(jié)

以上是生活随笔為你收集整理的PHP迸发,PHP 开发 「十宗罪」的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。