必須糾正得5個(gè)PHP編碼小陋習(xí)

在循環(huán)之前測(cè)試數(shù)組是否為空

$items = [];
// ...
if (count($items) > 0) {
    foreach ($items as $item) {
        // process on $item ...
    }
}
image.gif

10年架構(gòu)師領(lǐng)你架構(gòu)-成長(zhǎng)之路-(附面試題(含答案))

(騰訊T3-T4)打造互聯(lián)網(wǎng)PHP架構(gòu)師教程目錄大全呆万,只要你看完,薪資立馬提升2倍(持續(xù)更新)

點(diǎn)擊與我交流企鵝群.

foreach 以及數(shù)組函數(shù) (array_*) 可以處理空數(shù)組牡彻。

不需要先進(jìn)行測(cè)試
可減少一層縮進(jìn)

$items = [];
// ...
foreach ($items as $item) {
    // process on $item ...
}
image.gif

將代碼內(nèi)容封裝到一個(gè) if 語(yǔ)句匯總

function foo(User $user) {
    if (!$user->isDisabled()) {
        // ...
        // long process
        // ...
    }
}
image.gif

這不是 PHP 特有的情況庄吼,不過(guò)我經(jīng)常碰到此類情況严就。你可以通過(guò)提前返回來(lái)減少縮進(jìn)。

所有主要方法處于第一個(gè)縮進(jìn)級(jí)別

function foo(User $user) {
    if ($user->isDisabled()) {
        return;
    }

    // ...
    // 其他代碼
    // ...
}
image.gif

多次調(diào)用 isset 方法
你可能遇到以下情況:

$a = null;
$b = null;
$c = null;
// ...

if (!isset($a) || !isset($b) || !isset($c)) {
    throw new Exception("undefined variable");
}

// 或者

if (isset($a) && isset($b) && isset($c) {
    // process with $a, $b et $c
}

// 或者

$items = [];
//...
if (isset($items['user']) && isset($items['user']['id']) {
    // process with $items['user']['id']
}
image.gif

感謝大家一直來(lái)支持渐行,這是我準(zhǔn)備的1000粉絲福利

【1000粉絲福利】10年架構(gòu)師分享PHP進(jìn)階架構(gòu)資料祟印,助力大家都能30K

點(diǎn)擊與我交流企鵝群.

我們經(jīng)常需要檢查變量是否已定義袒炉,php 提供了 isset 函數(shù)可以用于檢測(cè)該變量,而且該函數(shù)可以一次接受多個(gè)參數(shù)我磁,所以一下代碼可能更好:

$a = null;
$b = null;
$c = null;
// ...

if (!isset($a, $b, $c)) {
    throw new Exception("undefined variable");
}

// 或者

if (isset($a, $b, $c)) {
    // process with $a, $b et $c
}

// 或者

$items = [];
//...
if (isset($items['user'], $items['user']['id'])) {
    // process with $items['user']['id']
}
image.gif

echo 和 sprintf 方法一起使用
name = "John Doe"; echo sprintf('Bonjour %s',name);
看到這段代碼你可能會(huì)想笑,不過(guò)我的確這樣寫(xiě)了一段時(shí)間沉衣,而且我仍然會(huì)看到很多這樣寫(xiě)的减牺!其實(shí) echo 和 sprintf 并不需同時(shí)使用,printf 就可以完全實(shí)現(xiàn)打印功能拔疚。name = "John Doe"; printf('Bonjour %s',name);
通過(guò)組合兩種方法檢查數(shù)組中是否存在鍵

$items = [
    'one_key' => 'John',
    'search_key' => 'Jane',
];

if (in_array('search_key', array_keys($items))) {
    // process
}
image.gif

我經(jīng)持墒В看到的最后一個(gè)錯(cuò)誤是 in_array 和 array_keys 的聯(lián)合使用。所有這些都可以使用 array_key_exists 替換句各。

$items = [
    'one_key' => 'John',
    'search_key' => 'Jane',
];

if (array_key_exists('search_key', $items)) {
    // process
}
image.gif

我們還可以使用 isset 來(lái)檢查值是否不是 null凿宾。

if (isset($items['search_key'])) {
    // process
}
image.gif

大廠2000道面試題(含答案)

PHP面試題匯總,看完這些面試題助力你面試成功件蚕,工資必有20-25K

點(diǎn)擊與我交流企鵝群.

喜歡我的文章就關(guān)注我吧产禾,持續(xù)更新中.....

以上內(nèi)容希望幫助到大家,很多PHPer在進(jìn)階的時(shí)候總會(huì)遇到一些問(wèn)題和瓶頸下愈,業(yè)務(wù)代碼寫(xiě)多了沒(méi)有方向感蕾久,不知道該從那里入手去提升,對(duì)此我整理了一些資料履因,包括但不限于:分布式架構(gòu)盹愚、高可擴(kuò)展、高性能毅舆、高并發(fā)、服務(wù)器性能調(diào)優(yōu)憋活、TP6,laravel悦即,YII2,Redis粱甫,Swoole作瞄、Swoft、Kafka节预、Mysql優(yōu)化属韧、shell腳本、Docker宵喂、微服務(wù)、Nginx等多個(gè)知識(shí)點(diǎn)高級(jí)進(jìn)階干貨需要的可以免費(fèi)分享給大家拙泽,需要的可以點(diǎn)擊進(jìn)入暗號(hào):知乎裸燎。

轉(zhuǎn)自鏈接:dev.to/klnjmm

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市荷荤,隨后出現(xiàn)的幾起案子移稳,更是在濱河造成了極大的恐慌,老刑警劉巖个粱,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件都许,死亡現(xiàn)場(chǎng)離奇詭異嫂冻,居然都是意外死亡颖低,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)蹬敲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)莺戒,“玉大人,你說(shuō)我怎么就攤上這事从铲。” “怎么了阱扬?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵伸辟,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我窃蹋,道長(zhǎng)静稻,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任杀迹,我火速辦了婚禮押搪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嵌言。我一直安慰自己及穗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布苛白。 她就那樣靜靜地躺著,像睡著了一般懂版。 火紅的嫁衣襯著肌膚如雪躏率。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天蓬抄,我揣著相機(jī)與錄音夯到,去河邊找鬼。 笑死耍贾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的付翁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胆敞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼杂伟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起观话,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤越平,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后晦溪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體挣跋,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年舟肉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片黄琼。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡整慎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出院领,到底是詐尸還是另有隱情,我是刑警寧澤丈氓,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布强法,位于F島的核電站,受9級(jí)特大地震影響闰歪,放射性物質(zhì)發(fā)生泄漏蓖墅。R本人自食惡果不足惜库倘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一教翩、第九天 我趴在偏房一處隱蔽的房頂上張望贪壳。 院中可真熱鬧,春花似錦闰靴、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)佳遣。三九已至凡伊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間系忙,已是汗流浹背惠豺。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛹疯,地道東北人热监。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像列吼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寞钥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355