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