Nom de méthode à partir d'une variable en POO en PHP
Par analogie avec les noms de propriétés dans une variable,
les noms de méthodes peuvent également être stockés. Regardons
un exemple. Supposons que nous ayons une classe User
avec des accesseurs (getters) pour les propriétés :
<?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;
}
}
?>
Créons un objet de cette classe :
<?php
$user = new User('john', 'smit');
?>
Supposons que le nom de la méthode soit stocké dans une variable :
<?php
$method = 'getName';
?>
Appelons la méthode dont le nom provient de la variable :
<?php
echo $user->$method(); // affichera 'john'
?>
La classe suivante est donnée :
<?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;
}
}
?>
Le tableau suivant est donné :
<?php
$methods = [
'method1' => 'getName',
'method2' => 'getSalary',
'method3' => 'getPosition',
];
?>
Créez un objet de la classe Employee,
puis accédez à ses propriétés
via les éléments du tableau.