ตัวดำเนินการ Nullsafe และชนิด Union
ใช้ ?-> เพื่อต่อการเรียกใช้ออบเจ็กต์ที่อาจเป็นค่าว่างอย่างปลอดภัย และประกาศคำใบ้ชนิด Union
ตัวดำเนินการ Nullsafe และชนิด Union เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
ตัวดำเนินการ Nullsafe
PHP 8.0 เปิดตัว ?-> หากด้านซ้ายเป็น null ระบบจะหยุดการทำงานของห่วงโซ่ทั้งหมดและส่งคืน null แทนการส่งข้อผิดพลาด
ปัญหาที่ช่วยแก้ไข
หากไม่มี nullsafe การเรียกอ็อบเจ็กต์ที่อาจเป็นค่าว่างต่อกันจำเป็นต้องตรวจสอบค่าว่างอย่างละเอียดและยืดเยื้อ
<?php
// Old way:
$city = null;
if ($user !== null && $user->getAddress() !== null) {
$city = $user->getAddress()->getCity();
}
// PHP 8 nullsafe:
$city = $user?->getAddress()?->getCity();Nullsafe กับการเรียกเมธอด
ระบบจะตรวจสอบ ?-> แต่ละตัวในห่วงโซ่อย่างอิสระ ค่า null ตัวแรกจะหยุดการทำงานของส่วนที่เหลือ
<?php
$name = $order?->getCustomer()?->getName() ?? "Guest";Nullsafe กับคุณสมบัติ
ใช้กับการเข้าถึงคุณสมบัติได้เช่นกัน
<?php
$zip = $user?->address?->zip;Nullsafe ไม่ได้ข้ามผลข้างเคียง
หากห่วงโซ่ nullsafe หยุดการทำงาน การเรียกเมธอดถัดไปในห่วงโซ่จะไม่ทำงาน จึงไม่มีผลข้างเคียงเกิดขึ้น
ชนิดข้อมูลแบบยูเนียน
ชนิดข้อมูลแบบยูเนียนใน PHP 8.0 ช่วยให้ประกาศได้ว่าพารามิเตอร์ คุณสมบัติ หรือค่าที่ส่งคืนยอมรับชนิดข้อมูลใดชนิดหนึ่งจากหลายชนิด
<?php
function formatId(int|string $id): string {
return (string) $id;
}ตัวอย่างชนิดข้อมูลแบบยูเนียน
ชนิดข้อมูลแบบยูเนียนที่ใช้บ่อยในทางปฏิบัติ:
<?php
function process(int|float $amount): float {
return (float) $amount;
}
function findUser(int|string $idOrEmail): ?User {
// search by ID or email
}ชนิดข้อมูลที่อาจเป็นค่าว่าง
?Type เป็นรูปย่อของ Type|null หมายความว่าค่าอาจเป็นชนิดนั้นหรือเป็น null
<?php
function greet(?string $name): string {
return "Hello, ".($name ?? "stranger");
}null ในชนิดข้อมูลแบบยูเนียน
คุณสามารถระบุ null อย่างชัดเจนในชนิดข้อมูลแบบยูเนียนได้: int|string|null
ชนิดข้อมูลแบบอินเตอร์เซกชัน (PHP 8.1)
PHP 8.1 เพิ่มชนิดข้อมูลแบบอินเตอร์เซกชัน (A&B) ซึ่งค่าจะต้องเป็นไปตามชนิดข้อมูลทั้งหมดพร้อมกัน เหมาะสำหรับการฉีดการพึ่งพาที่ปลอดภัยด้านชนิดข้อมูล
<?php
function process(Iterator&Countable $collection): void {
// $collection must be both Iterator AND Countable
}การบังคับชนิดข้อมูลกับ strict_types
หากไม่มี declare(strict_types=1) PHP อาจบังคับแปลงค่า (เช่น "42" เป็น 42) แต่ในโหมดเข้มงวดจะยอมรับเฉพาะค่าที่ตรงกับชนิดข้อมูลอย่างแน่นอน
สรุป
ตัวดำเนินการ nullsafe (?->) ช่วยตัดการตรวจสอบค่าว่างที่ซ้ำซ้อนในห่วงโซ่ ชนิดข้อมูลแบบยูเนียน (int|string) ช่วยให้ลายเซ็นฟังก์ชันยืดหยุ่นและยังปลอดภัยด้านชนิดข้อมูล
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ตัวดำเนินการ nullsafe จะส่งคืนอะไร หากเมธอดหนึ่งในห่วงโซ่ส่งคืนค่า null
คำถามที่พบบ่อย
บทเรียน “ตัวดำเนินการ Nullsafe และชนิด Union” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวดำเนินการ Nullsafe และชนิด Union” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวดำเนินการ Nullsafe และชนิด Union”
ใช้ ?-> เพื่อต่อการเรียกใช้ออบเจ็กต์ที่อาจเป็นค่าว่างอย่างปลอดภัย และประกาศคำใบ้ชนิด Union คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ตัวดำเนินการ Nullsafe และชนิด Union” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม
ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- นิพจน์ Match และอาร์กิวเมนต์ที่ระบุชื่อ
- ตัวดำเนินการ Nullsafe และชนิด Union
- การแจกแจงค่า (Enums)
- Fibers: การทำงานพร้อมกันแบบร่วมมือกัน