Как вызвать public метод в php через объектные литералы? class A { public function a() { echo "a"; } } class B extends A { public function controll($method) { $methods = [ "returnA" => $this -> a() ]; return $methods[$method]; } } $b = new B; $b -> controll("returnA"); Так вот вопрос: Это будет работать, только если в $methods только один метод, если же больше, то они вызываются сразу после инициализации массива. Как сделать так, чтобы можно было вызывать их только при необходимости, не используя switch и условные операторы.
Для вызова методов через объектные литералы в PHP можно воспользоваться анонимной функцией (замыканием). Пример:
class A { public function a() { echo "a"; } } class B extends A { public function controll($method) { $methods = [ "returnA" => function() { $this->a(); } ]; if (array_key_exists($method, $methods)) { $methods[$method](); } else { echo "Method not found"; } } } $b = new B; $b->controll("returnA");
В этом примере метод "returnA" представлен в объектном литерале анонимной функцией, которая вызывает метод a() объекта. При вызове метода controll() передается имя метода, которое проверяется наличие в объектном литерале, и если присутствует, соответствующая анонимная функция вызывается.
Для вызова методов через объектные литералы в PHP можно воспользоваться анонимной функцией (замыканием). Пример:
class A {public function a() {
echo "a";
}
}
class B extends A {
public function controll($method) {
$methods = [
"returnA" => function() {
$this->a();
}
];
if (array_key_exists($method, $methods)) {
$methods[$method]();
} else {
echo "Method not found";
}
}
}
$b = new B;
$b->controll("returnA");
В этом примере метод "returnA" представлен в объектном литерале анонимной функцией, которая вызывает метод a() объекта. При вызове метода controll() передается имя метода, которое проверяется наличие в объектном литерале, и если присутствует, соответствующая анонимная функция вызывается.