0Pricing
PHP Academy · บทเรียน

ตัวดำเนินการ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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