Nom de propriété d'un autre objet en POO en PHP

Le nom de la propriété peut même être une propriété d'un autre objet. Supposons que nous ayons la classe User suivante :

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

Créeons un objet de cette classe :

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

Supposons également que nous ayons la classe Prop, qui dans sa propriété value contiendra le nom de la propriété :

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

Créeons un objet de cette classe :

php<?php
  $prop = new Prop('name'); 
?>

Maintenant, en utilisant cet objet, affichons le nom de l'utilisateur :

php<?php
  echo $user->{$prop->value}; // affichera 'john'
?>
Задание 1

Voici la classe suivante :

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

Voici également une telle classe :

php<?php
  class Data
  {
    public $prop1 = 'name';
    public $prop2 = 'salary';
    public $prop3 = 'position';
  }
?>

Affichez les propriétés de l'objet Employee via l'objet Data.