這5個PHP編碼小陋習,面試時可千萬不能犯!!!

這些問題在面試的時候可千萬不能犯!!!php

1、在循環以前測試數組是否爲空

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

foreach 以及數組函數 (array_*) 能夠處理空數組。laravel

不須要先進行測試面試

可減小一層縮進sql

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

2、將代碼內容封裝到一個 if 語句彙總

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

這不是 PHP 特有的狀況,不過我常常碰到此類狀況。你能夠經過提早返回來減小縮進。shell

全部主要方法處於第一個縮進級別數組

function foo(User $user) {
    if ($user->isDisabled()) {
        return;
    }
 
    // ...
    // 其餘代碼
    // ...
}

3、屢次調用 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']
}

咱們常常須要檢查變量是否已定義,php 提供了 isset 函數能夠用於檢測該變量,並且該函數能夠一次接受多個參數,因此一下代碼可能更好:架構

$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']
}

4、echo和sprintf方法一塊兒使用

$name = "John Doe";
echo sprintf('Bonjour %s', $name);

這段代碼可能在微笑,可是我碰巧寫了一段時間。並且我仍然看到不少!不用結合echo和sprintf,咱們能夠簡單地使用printf方法。併發

$name = "John Doe";
printf('Bonjour %s', $name);

5、經過組合兩種方法檢查數組中是否存在鍵

$items = [
    'one_key' => 'John',
    'search_key' => 'Jane',
];
 
if (in_array('search_key', array_keys($items))) {
    // process
}

我常常看到的最後一個錯誤是in_array和array_keys的聯合使用。全部這些均可以使用array_key_exists替換。分佈式

$items = [
    'one_key' => 'John',
    'search_key' => 'Jane',
];
 
if (array_key_exists('search_key', $items)) {
    // process
}

咱們還能夠使用isset來檢查值是否不是null。

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

點關注,不迷路

好了各位,以上就是這篇文章的所有內容了,能看到這裏的人呀,都是人才。以前說過,PHP方面的技術點不少,也是由於太多了,實在是寫不過來,寫過來了你們也不會看的太多,因此我這裏把它整理成了PDF和文檔,若是有須要的能夠

點擊進入暗號: PHP+「平臺」

在這裏插入圖片描述

在這裏插入圖片描述


更多學習內容能夠訪問【對標大廠】精品PHP架構師教程目錄大全,只要你能看完保證薪資上升一個臺階(持續更新)

以上內容但願幫助到你們,不少PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那裏入手去提高,對此我整理了一些資料,包括但不限於:分佈式架構、高可擴展、高性能、高併發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階乾貨須要的能夠免費分享給你們,須要的能夠加入個人 PHP技術交流羣

相關文章
相關標籤/搜索