วันอังคารที่ 25 กุมภาพันธ์ พ.ศ. 2568

[PHP] 5 เทคนิคเพิ่มความฉลาดให้ if statement ใน PHP

ถ้าคุณเป็นสาย 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 ของคุณจะดูโปรขึ้นอีกระดับ! 🚀

ไม่มีความคิดเห็น:

แสดงความคิดเห็น