Tên thuộc tính từ mảng trong OOP trong PHP

Bây giờ hãy xem cách truy cập thuộc tính của đối tượng theo tên từ phần tử mảng. Giả sử chúng ta có lớp User sau:

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

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

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

Giả sử cho một mảng các thuộc tính:

php<?php
  $props = ['name', 'surn'];
?>

Bây giờ hãy thử in giá trị của thuộc tính được lưu trữ trong phần tử 0 của mảng:

php<?php
  echo $user->$props[0]; // cách này sẽ không hoạt động
?>

Để một tên thuộc tính phức tạp như vậy hoạt động, nó cần được đặt trong dấu ngoặc nhọn, như thế này:

php<?php
  echo $user->{$props[0]}; // sẽ in ra 'john'
?>
Задание 1

Cho lớp sau:

php<?php
  class Employee
  {
    public $name;
    public $salary;
    public $position;
    
    public function __construct($name, $salary, $position)
    {
      $this->name = $name;
      $this->salary = $salary;
      $this->position = $position;
    }
  }
?>

Cho mảng:

php<?php
  $arr = ['name', 'salary', 'position'];
?>

Tạo một đối tượng của lớp Employee, sau đó truy cập các thuộc tính của nó thông qua các phần tử của mảng.