PHP-TIPS

  • 在 foreach 中不要使用 array_merge舀透,不僅慢而且耗費內(nèi)存栓票,可以在 foreach 中對要合并的數(shù)組進行賦值,在 foreach 外部統(tǒng)一進行合并愕够,具體性能差異可以參考這篇文章:不要在循環(huán)體中使用 array_merge()
  • 在 foreach 中也不要使用 array_push走贪,可以通過向數(shù)組中賦值的方式代替,比如:students[] =student['id']惑芭, 而不是 array_push(students,student['id'])坠狡,具體性能差異可以參考這篇文章:不要在循環(huán)體中使用 array_push()
  • 針對一些查詢較為復雜或者比較核心的邏輯里的 sql 查詢,可以將 sql 語句寫到注釋中遂跟,這樣看代碼的時候不用再去拼接 sql逃沿,直接用注釋中的 sql 拿來排查問題
  • 如果使用 phpstorm 可以安裝 php inspections 插件來進行代碼的靜態(tài)分析,可以幫助查找代碼規(guī)范幻锁,語法漏洞凯亮,函數(shù)使用方式方面的錯誤。其他的一些代碼質(zhì)量工具可以配置使用 phpcs哄尔,phpmd假消,phpcs-fixer,psalm岭接,phpstan 等置谦。而且可以通過 phpstorm 的熱鍵錄制功能堂鲤,將徽標鍵 + s 設置為 phpcs-fixer,format code 的快捷鍵媒峡,這樣寫完時可以通過快捷鍵格式化代碼。
  • 為避免在項目中將 dd葵擎,var_dump谅阿,exit,die 等函數(shù)提交到遠程版本庫中酬滤,可以在項目的 .git/hooks/pre-commit 中進行控制签餐,加入下面的代碼,每次提交時可以檢測到盯串。參考的這個:pre-commit
VAR=$(git diff --cached --diff-filter=ACMR | grep -wiE "var_dump|echo|exit|dd|die|console.log") if [ ! -z "\$VAR"  ]; then  echo "You've left a dd, var_dump, exit, die or console.log in one of your files! You don't really want to commit this so aborting now..." exit 1 fi
  • 在 for 循環(huán)的條件中不要使用函數(shù)氯檐,例如使用 count 來計算總數(shù),這樣每次循環(huán)都會執(zhí)行一遍体捏,不太好
  • 使用三元運算符時如果要做強制類型轉(zhuǎn)換請記得要在運算區(qū)域加括號避免報錯冠摄,例如:(string)$studentId ?? "",這樣的寫法會產(chǎn)生歧義几缭,如果同為字符串不會報錯河泳,如果是這樣:(string)$studentId ?? null,那么就會報錯年栓。建議寫成 (string)($studentId ?? null)
  • 如果要做判斷時要確定好運算符的優(yōu)先級從而確保執(zhí)行順序拆挥,以免與預期相左,例如:
if ($isNew && $student = Stu::find($id) && isset($foo->con)) {  ... }

因為邏輯運算符 && 的運算優(yōu)先級大于賦值運算符 =某抓,所以上面這段代碼可能會產(chǎn)生與預期不符的結(jié)果纸兔,這種情況下為保證執(zhí)行順序,盡量使用括號括起來否副。

包括下面這種:

if (!isset($student['birthday']) > time()) {  ... }

雖然邏輯運算符 汉矿!的優(yōu)先級大于比較運算符 >,但手冊中依然建議使用括號來明確運算順序來增加代碼可讀性副编,手冊中是這么說的:

“括號的使用负甸,哪怕在不是必要的場合下,通過括號的配對來明確標明運算順序痹届,而非靠運算符優(yōu)先級和結(jié)合性來決定呻待,通常能夠增加代碼的可讀性《痈”

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚕捉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子柴淘,更是在濱河造成了極大的恐慌迫淹,老刑警劉巖秘通,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異敛熬,居然都是意外死亡肺稀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門应民,熙熙樓的掌柜王于貴愁眉苦臉地迎上來话原,“玉大人,你說我怎么就攤上這事诲锹》比剩” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵归园,是天一觀的道長黄虱。 經(jīng)常有香客問我,道長庸诱,這世上最難降的妖魔是什么捻浦? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮偶翅,結(jié)果婚禮上默勾,老公的妹妹穿的比我還像新娘。我一直安慰自己聚谁,他們只是感情好母剥,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著形导,像睡著了一般环疼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上朵耕,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天炫隶,我揣著相機與錄音,去河邊找鬼阎曹。 笑死伪阶,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的处嫌。 我是一名探鬼主播栅贴,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼熏迹!你這毒婦竟也來了檐薯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤注暗,失蹤者是張志新(化名)和其女友劉穎坛缕,沒想到半個月后墓猎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡赚楚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年逛腿,在試婚紗的時候發(fā)現(xiàn)自己被綠了太闺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片念颈。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡症虑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出勇皇,到底是詐尸還是另有隱情,我是刑警寧澤焚刺,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布敛摘,位于F島的核電站,受9級特大地震影響乳愉,放射性物質(zhì)發(fā)生泄漏兄淫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一蔓姚、第九天 我趴在偏房一處隱蔽的房頂上張望捕虽。 院中可真熱鬧,春花似錦坡脐、人聲如沸泄私。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晌端。三九已至,卻和暖如春恬砂,著一層夾襖步出監(jiān)牢的瞬間咧纠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工泻骤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留漆羔,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓狱掂,卻偏偏與公主長得像演痒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子符欠,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Php:腳本語言嫡霞,網(wǎng)站建設,服務器端運行 PHP定義:一種服務器端的HTML腳本/編程語言,是一種簡單的希柿、面向?qū)ο?..
    廖馬兒閱讀 2,120評論 2 38
  • 一诊沪、php基本語法格式 1.1.簡介 php文件: php能做什么: 運行環(huán)境: 原理:客戶端瀏覽器不能讀取php...
    簡6yao閱讀 403評論 0 0
  • PHP基礎知識 1. 引用變量 概念:在PHP中引用意味著用不同的名字訪問同一個變量內(nèi)容养筒。 定義方式:使用&符號 ...
    LeeShun閱讀 420評論 0 0
  • PHP 標簽(空格分隔): 面試 PHP的引用變量的概念及定義 延伸: PHP引用變量的原理 概念:在 PHP 中...
    赤子游閱讀 362評論 0 0
  • php面試題及答案(轉(zhuǎn)載)收藏 基礎題: 1.表單中 get與post提交方法的區(qū)別? 答:get是發(fā)送請求HTT...
    積_漸閱讀 1,634評論 0 37