นิพจน์ Match และอาร์กิวเมนต์ที่ระบุชื่อ
แทนที่ switch ที่ยืดยาวด้วย match และใช้อาร์กิวเมนต์ที่ระบุชื่อเพื่อให้โค้ดชัดเจน
นิพจน์ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- นิพจน์ Match และอาร์กิวเมนต์ที่ระบุชื่อ
- ตัวดำเนินการ Nullsafe และชนิด Union
- การแจกแจงค่า (Enums)
- Fibers: การทำงานพร้อมกันแบบร่วมมือกัน