幾個常用的PHP語法糖,學(xué)好了代碼寫法,“能讓你少加三年班”。一、箭頭函數(shù):讓閉包瘦身90%的魔法
array_map(function($user) use ($prefix) {
return $prefix . $user['name'];
}, $users);
array_map(fn($user) => $prefix . $user['name'], $users);
二、?? 空合并運(yùn)算符:專治undefined的頭痛病
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$page = $_GET['page'] ?? 1;
$config = $cache->get('config') ?? $db->query() ?? require 'default.php';
三、... 解構(gòu)賦值:數(shù)組拆包神器
以前取數(shù)組值像玩扭蛋:
$first = $users[0];
$second = $users[1];
[$zhx, $sihong, ...$liuliu] = $users;
['name' => $name, 'email' => $email] = $user;
四、match表達(dá)式:switch-case的整容版
傳統(tǒng)switch看上去很羅嗦:
switch ($sCode) {
case 200:
$message = '成功';
break;
case 404:
$message = '沒找到';
break;
default:
$message = '系統(tǒng)錯誤';
}
$message = match($statusCode) {
200 => '成功',
404 => '沒找到',
default => '未知錯誤'
};
強(qiáng)類型匹配(===),不會出現(xiàn)意外類型轉(zhuǎn)換
五、str_contains:字符串包含檢測的最短寫法
之前我們的寫法:
if (strpos($haystack, $needle) !== false) {
}
現(xiàn)在直接
if (str_contains($haystack, $needle)) {
}
全家桶還有:
str_starts_with()
str_ends_with()
六、Nullsafe運(yùn)算符:鏈?zhǔn)秸{(diào)用的防崩盾牌
以前要層層判斷:
if ($order && $order->getUser() && $order->getUser()->getAddress()) {
$city = $order->getUser()->getAddress()->city;
}
$city = $order?->getUser()?->getAddress()?->city;
(PHP8.0+專屬,中途遇到null直接返回null)
七、數(shù)組解構(gòu)+list:快速提取鍵值對
遍歷時(shí)快速拆包:
foreach ($users as ['age' => $age, 'name' => $name]) {
echo "$age: $name";
}
$userDetal = ['王立', 'wang@example.com', 22];
list($name, $email, $age) = $userData;
八、太空船運(yùn)算符:比較結(jié)果三態(tài)輸出
usort($users, function($a, $b) {
if ($a['age'] == $b['age']) return 0;
return $a['age'] < $b['age'] ? -1 : 1;
});
usort($users, fn($a, $b) => $a['age'] <=> $b['age']);
使用時(shí)要注意:
團(tuán)隊(duì)項(xiàng)目要考慮最低PHP版本
過度簡潔可以讓某些小菜鳥看不懂
新特性要寫單元測試防翻車
會用語法糖的程序員可不一定是高手,但高手一定懂得在合適的地方加糖。畢竟,我們用PHP的目的就是為了少寫代碼提高開發(fā)效率。
閱讀原文:原文鏈接
該文章在 2025/5/26 10:57:36 編輯過