PHP Academy · บทเรียน

นิพจน์ Match และอาร์กิวเมนต์ที่ระบุชื่อ

แทนที่ switch ที่ยืดยาวด้วย match และใช้อาร์กิวเมนต์ที่ระบุชื่อเพื่อให้โค้ดชัดเจน

บทเรียน 1 จาก 413 ขั้นตอน

นิพจน์ Match และอาร์กิวเมนต์ที่ระบุชื่อ เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

นิพจน์ match

PHP 8.0 เปิดตัว match ซึ่งเป็นทางเลือกที่กระชับกว่า switch ใช้การเปรียบเทียบแบบเข้มงวด (===) และส่งคืนค่า

match กับ switch

ความแตกต่างสำคัญ ได้แก่ match ใช้การเปรียบเทียบแบบเข้มงวด ไม่มีการไหลต่อไปยังกรณีถัดไป และเป็นนิพจน์ (ส่งคืนค่า)

<?php
$status = 2;
$label = match($status) {
    1 => "active",
    2 => "inactive",
    3 => "banned",
    default => "unknown",
};
echo $label; // "inactive"

หลายเงื่อนไขต่อแขนง

คั่นค่าของ match หลายค่าด้วยจุลภาคเพื่อจัดการค่าดังกล่าวด้วยผลลัพธ์เดียวกัน

<?php
$code = 404;
$type = match($code) {
    200, 201, 202 => "success",
    400, 422      => "client error",
    404           => "not found",
    500, 503      => "server error",
    default       => "other",
};
echo $type; // "not found"

match ส่งข้อผิดพลาดเมื่อไม่ตรงกัน

หากไม่มีแขนงใดตรงกันและไม่มี default PHP จะส่ง UnhandledMatchError ซึ่งแตกต่างจาก switch ที่ดำเนินการต่ออย่างเงียบ ๆ

การใช้ match เป็นนิพจน์

เนื่องจาก match ส่งคืนค่า คุณจึงใช้แบบแทรกในนิพจน์ได้ เช่น เป็นอาร์กิวเมนต์ของฟังก์ชัน ในคำสั่งส่งคืนค่า หรือภายในการแทรกสตริง

<?php
echo "Status: ".match($active) {
    true  => "ON",
    false => "OFF",
};

อาร์กิวเมนต์แบบระบุชื่อ

อาร์กิวเมนต์แบบระบุชื่อใน PHP 8.0 ช่วยให้ส่งอาร์กิวเมนต์ให้ฟังก์ชันตามชื่อพารามิเตอร์ได้ โดยไม่จำเป็นต้องเรียงลำดับ

<?php
function makeTag(string $tag, string $content, string $class = ""): string {
    return "<$tag class=\"$class\">$content</$tag>";
}
echo makeTag(content: "Hello", tag: "p", class: "lead");

ประโยชน์ของอาร์กิวเมนต์แบบระบุชื่อ

อาร์กิวเมนต์แบบระบุชื่อช่วยให้อ่านฟังก์ชันที่มีพารามิเตอร์จำนวนมากได้ง่ายขึ้น ข้ามพารามิเตอร์ที่ไม่บังคับได้ และทำให้ทราบว่าค่าแต่ละค่าหมายถึงอะไร

อาร์กิวเมนต์แบบระบุชื่อกับฟังก์ชันในตัว

อาร์กิวเมนต์แบบระบุชื่อใช้กับฟังก์ชันในตัวของ PHP ได้เช่นกัน

<?php
$arr = [3, 1, 4, 1, 5];
$result = array_slice(array: $arr, offset: 1, length: 3, preserve_keys: true);

การผสมอาร์กิวเมนต์แบบระบุชื่อและตามตำแหน่ง

คุณสามารถผสมอาร์กิวเมนต์แบบตามตำแหน่งและแบบระบุชื่อได้ แต่ต้องวางอาร์กิวเมนต์แบบระบุชื่อไว้หลังอาร์กิวเมนต์แบบตามตำแหน่ง

<?php
str_contains(haystack: "Hello World", needle: "World");
// or positional then named:
str_contains("Hello World", needle: "World");

อาร์กิวเมนต์แบบระบุชื่อใน array_map

อาร์กิวเมนต์แบบระบุชื่อมีประโยชน์เป็นพิเศษกับฟังก์ชันในตัวแบบรับอาร์กิวเมนต์ไม่จำกัดจำนวน ซึ่งมีลำดับพารามิเตอร์ที่เข้าใจได้ยาก

การใช้ match ในโค้ดจริง

แทนที่ชุดเงื่อนไข if/elseif ที่ยาวด้วย match สำหรับการกำหนดเส้นทางตามเมธอด HTTP การจับคู่รหัสสถานะ และการตัดสินใจที่มีลักษณะคล้าย enum

<?php
$handler = match($_SERVER["REQUEST_METHOD"]) {
    "GET"    => new GetHandler(),
    "POST"   => new PostHandler(),
    "DELETE" => new DeleteHandler(),
    default  => throw new InvalidArgumentException("Unsupported method"),
};

สรุป

match ช่วยให้แตกแขนงแบบเข้มงวด ครบถ้วน และไม่มีการไหลต่อไปยังแขนงถัดไป อาร์กิวเมนต์แบบระบุชื่อช่วยให้อ่านจุดเรียกใช้ได้ง่ายขึ้น ทั้งสองอย่างเป็นการปรับปรุงครั้งสำคัญใน PHP 8.0

ตรวจสอบความเข้าใจอย่างรวดเร็ว

จะเกิดอะไรขึ้นเมื่อไม่มีแขนงของ match ใดตรงกันและไม่มี default

เริ่มต้นได้ฟรี

เรียนรู้ PHP ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
49
บทเรียน
195

คำถามที่พบบ่อย

บทเรียน “นิพจน์ Match และอาร์กิวเมนต์ที่ระบุชื่อ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “นิพจน์ Match และอาร์กิวเมนต์ที่ระบุชื่อ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “นิพจน์ Match และอาร์กิวเมนต์ที่ระบุชื่อ”

แทนที่ switch ที่ยืดยาวด้วย match และใช้อาร์กิวเมนต์ที่ระบุชื่อเพื่อให้โค้ดชัดเจน คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “นิพจน์ Match และอาร์กิวเมนต์ที่ระบุชื่อ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. นิพจน์ Match และอาร์กิวเมนต์ที่ระบุชื่อ
  2. ตัวดำเนินการ Nullsafe และชนิด Union
  3. การแจกแจงค่า (Enums)
  4. Fibers: การทำงานพร้อมกันแบบร่วมมือกัน
← กลับไปที่ PHP Academy