Toán tử truy xuất an toàn trong OOP trong PHP

Toán tử truy xuất an toàn ?-> cho phép truy cập một cách an toàn vào các phương thức và thuộc tính của đối tượng, mà các đối tượng đó có thể là null.

Hãy xem xét một ví dụ. Giả sử chúng ta có lớp sau:

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

Hãy tạo một đối tượng của lớp này:

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

Hãy in ra giá trị thuộc tính của nó:

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

Bây giờ giả sử xảy ra trường hợp thay vì đối tượng, chúng ta có null. Trong trường hợp này việc cố gắng truy cập vào tên người dùng sẽ dẫn đến lỗi:

php<?php
  $user = null;
  echo $user->name; // lỗi
?>

Để tránh lỗi, chúng ta có thể sử dụng toán tử truy xuất an toàn:

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

Hãy cải thiện đoạn mã sau bằng cách sử dụng toán tử truy xuất an toàn:

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;
?>