Methode naam uit variabele in OOP in PHP

Vergelijkbaar met de namen van eigenschappen in een variabele kunnen ook de namen van methoden worden opgeslagen. Laten we een voorbeeld bekijken. Stel dat we de volgende klas User hebben met getters voor eigenschappen:

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

Laten we een object van deze klas maken:

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

Stel dat in een variabele de naam van een methode is opgeslagen:

php<?php
  $method = 'getName';
?>

Laten we de methode aanroepen met de naam uit de variabele:

php<?php
  echo $user->$method(); // geeft 'john' weer
?>
Задание 1

Gegeven de volgende klas:

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

Gegeven de volgende array:

php<?php
  $methods = [
    'method1' => 'getName',
    'method2' => 'getSalary',
    'method3' => 'getPosition',
  ];
?>

Maak een object van de klas Employee, en benader vervolgens de eigenschappen via de elementen van de array.