ตัวดำเนินการเข้าถึงอย่างปลอดภัยใน OOP ใน PHP

ตัวดำเนินการเข้าถึงอย่างปลอดภัย ?-> ช่วยให้ สามารถเข้าถึงเมธอดและคุณสมบัติของวัตถุได้อย่างปลอดภัย แม้ว่าวัตถุเหล่านั้นจะเป็น null

ลองดูตัวอย่าง สมมติว่าเรามีคลาสต่อไปนี้:

php<?php
  class User
  {
    public $name;
    
    public function __construct($name)
    {
      $this->name = $name;
    }
  }
?>

สร้างออบเจ็กต์ของคลาสนี้:

php<?php
  $user = new User('john');
?>

แสดงค่าของคุณสมบัติ:

php<?php
  $user = new User('john');
  echo $user->name;
?>

สมมติว่าตอนนี้เกิดกรณีที่แทนที่จะเป็น ออบเจ็กต์ เรามี null ในกรณีนี้ การพยายามเข้าถึงชื่อผู้ใช้ จะทำให้เกิดข้อผิดพลาด:

php<?php
  $user = null;
  echo $user->name; // ข้อผิดพลาด
?>

เพื่อป้องกันข้อผิดพลาด เราสามารถ ใช้ตัวดำเนินการเข้าถึงอย่างปลอดภัย:

php<?php
  $user = null;
  echo $user?->name;
?>
Задание 1

ปรับปรุงโค้ดต่อไปนี้โดยใช้ ตัวดำเนินการเข้าถึงอย่างปลอดภัย:

php<?php
  class Employee {
    public $name;
    public $salary;
    
    public function __construct($name, $salary)
    {
      $this->name = $name;
      $this->salary = $salary;
    }
  }
  
  $employee = new Employee('john', 1000);
  
  echo $employee->name;
  echo $employee->salary;
?>