ถ้าคุณเป็นสาย PHP แล้วเคยเขียนโค้ดแบบนี้:
if ($age >= 18) {
$message = 'สามารถเข้าใช้ระบบได้';
} else {
$message = 'ขออภัย คุณต้องมีอายุ 18 ปีขึ้นไป';
}
ก็ถึงเวลายกระดับสกิลกันแล้ว! 😎
if เป็นหนึ่งในโครงสร้างที่ใช้บ่อยสุดของ PHP แต่การใช้ if อย่างชาญฉลาดจะช่วยให้โค้ดของคุณ อ่านง่ายขึ้น, ทำงานเร็วขึ้น และดูแพงขึ้น 💎 วันนี้เรามาดู 5 เทคนิคที่จะช่วยเพิ่มพลังให้กับ if statement ของคุณ!
1. ใช้ Ternary Operator (?:) ให้โค้ดสั้นลง
ถ้าเงื่อนไขของคุณแค่กำหนดค่าตัวแปร if-else อาจจะดูเทอะทะไปหน่อย ลองใช้ Ternary Operator (?:) เพื่อให้โค้ดสั้นและดูดีขึ้น
🆚 if-else แบบเดิม
if ($age >= 18) {
$message = 'สามารถเข้าใช้ระบบได้';
} else {
$message = 'ขออภัย คุณต้องมีอายุ 18 ปีขึ้นไป';
}
✨ ใช้ Ternary Operator
$message = ($age >= 18) ? 'สามารถเข้าใช้ระบบได้' : 'ขออภัย คุณต้องมีอายุ 18 ปีขึ้นไป';
✅ อ่านง่าย ✅ ลดบรรทัดโค้ด ✅ เร็วขึ้น
ข้อควรระวัง: ถ้าเงื่อนไขซับซ้อนมาก อย่าใช้ Ternary Operator เพราะจะทำให้โค้ดอ่านยาก
2. ใช้ Null Coalescing (??) แทนการเช็คค่า null
ถ้าต้องการตรวจสอบว่าตัวแปรมีค่าหรือไม่ แทนที่จะใช้ if ยาวๆ เราสามารถใช้ Null Coalescing Operator (??) ได้
🆚 if-else เช็คค่า null แบบเดิม
if (isset($_GET['user'])) {
$user = $_GET['user'];
} else {
$user = 'Guest';
}
✨ ใช้ Null Coalescing Operator
$user = $_GET['user'] ?? 'Guest';
ทำงานยังไง?
- ถ้า $_GET['user'] มีค่า → ใช้ค่านั้น
- ถ้าไม่มี (เช่น ไม่ได้ถูกส่งมา หรือเป็น null) → ใช้ค่า 'Guest' แทน
✅ โค้ดสั้นลง ✅ อ่านง่าย ✅ ใช้ในฟอร์มหรือ API ได้ดี
3. ใช้ Early Return แทน Nested If
การซ้อน if (nested if) เยอะๆ ทำให้โค้ดอ่านยากมาก แถมยังต้องไล่ปิด } เยอะสุดๆ 😵
ลองดูโค้ดนี้:
🆚 Nested If แบบเดิม
function checkUser($user) {
if ($user) {
if ($user->isActive) {
return 'Welcome, ' . $user->name;
} else {
return 'บัญชีนี้ถูกปิดใช้งาน';
}
} else {
return 'ไม่พบผู้ใช้';
}
}
ปัญหา: 👎 อ่านยาก, มีการซ้อน if ไม่จำเป็น
✨ ใช้ Early Return ให้ดูโปร
function checkUser($user) {
if (!$user) return 'ไม่พบผู้ใช้';
if (!$user->isActive) return 'บัญชีนี้ถูกปิดใช้งาน';
return 'Welcome, ' . $user->name;
}
✅ โค้ดกระชับ ✅ อ่านง่าย ✅ ลดการซ้อนของ if
4. ใช้ switch หรือ match แทน if-else ที่ยาวเกินไป
ถ้า if-else มีหลายเงื่อนไขแบบนี้:
🆚 if-else ยาวๆ
if ($status === 'pending') {
$message = 'รอดำเนินการ';
} elseif ($status === 'approved') {
$message = 'อนุมัติแล้ว';
} elseif ($status === 'rejected') {
$message = 'ถูกปฏิเสธ';
} else {
$message = 'สถานะไม่ถูกต้อง';
}
✨ ใช้ switch แทน
switch ($status) {
case 'pending':
$message = 'รอดำเนินการ';
break;
case 'approved':
$message = 'อนุมัติแล้ว';
break;
case 'rejected':
$message = 'ถูกปฏิเสธ';
break;
default:
$message = 'สถานะไม่ถูกต้อง';
}
✨ ใช้ match (PHP 8)
$message = match ($status) {
'pending' => 'รอดำเนินการ',
'approved' => 'อนุมัติแล้ว',
'rejected' => 'ถูกปฏิเสธ',
default => 'สถานะไม่ถูกต้อง',
};
✅ switch/match อ่านง่ายกว่า ✅ เหมาะกับหลายเงื่อนไข
5. ใช้ Array Mapping แทน If-Else
ถ้า if-else แค่แมปค่า เราสามารถใช้ Array Mapping แทนได้
🆚 if-else แบบเดิม
if ($role === 'admin') {
$permissions = ['edit', 'delete', 'view'];
} elseif ($role === 'editor') {
$permissions = ['edit', 'view'];
} else {
$permissions = ['view'];
}
✨ ใช้ Array Mapping
$rolePermissions = [
'admin' => ['edit', 'delete', 'view'],
'editor' => ['edit', 'view'],
'user' => ['view']
];
$permissions = $rolePermissions[$role] ?? ['view'];
✅ ลดโค้ด ✅ อ่านง่าย ✅ ขยายง่าย
🎯 สรุป: เทคนิคเพิ่มความฉลาดให้ if statement
✅ Ternary Operator (?:) → ลดโค้ด if-else ที่กำหนดค่า
✅ Null Coalescing (??) → เช็คค่า null แบบง่ายๆ
✅ Early Return → ลด nested if เพื่อให้โค้ดดูสะอาด
✅ ใช้ switch หรือ match → แทน if-else ที่ยาวเกินไป
✅ Array Mapping → ลดการใช้ if-else สำหรับการแมปค่า
ลองนำเทคนิคเหล่านี้ไปใช้ แล้วโค้ด PHP ของคุณจะดูโปรขึ้นอีกระดับ! 🚀
ไม่มีความคิดเห็น:
แสดงความคิดเห็น