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

По аналогии с названиями свойств в переменной также можно хранить и имена методов. Давайте посмотрим на примере. Пусть у нас дан вот такой класс `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']; ?>`

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

← →
↑