Переменные названия методов

По аналогии с названиями свойств в переменной также можно хранить и имена методов. Давайте посмотрим на примере. Пусть у нас дан вот такой класс User с геттерами свойств:

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

Пусть в переменной $method хранится имя метода. Давайте вызовем метод с таким именем:

<?php $user = new User('john', 21); $method = 'getName'; echo $user->$method(); // выведет 'john' ?>

Если имя метода получается из массива, то такое обращение к методу следует брать в фигурные скобки вот таким образом (круглые скобки будут снаружи фигурных):

<?php $user = new User('john', 21); $methods = ['getName', 'getAge']; echo $user->{$methods[0]}(); // выведет 'john' ?>

Все остальные нюансы точно такие же, как и при работе со свойствами из переменной.

Пусть массив $methods будет ассоциативным с ключами method1 и method2:

<?php $methods = ['method1' => 'getName', 'method2' => 'getAge']; ?>

Выведите имя и возраст пользователя с помощью этого массива.