sorry_i_noob
@sorry_i_noob

Можно ли в php называть методы с помощью интерполяции? Переменные можно, а вот интересно — методы можно?

Я хочу для объявления метода использовать что-то вроде этого:
$field = 'articles';
${'action_'.$field};

Возможно ли такое в php?
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
Нет, при помощи интерполяции и "в лоб" в PHP - нельзя. Но есть другие способы. Вы можете определить магический метод __call.
class Foo {
    function __call($func, $params) {
        switch($func) {
            case 'one':
                // logic for one method
               break;
        }
    }
}
$foo = new Foo();
$foo->one(); // runs logic for one method

Или использовать Closure. Есть даже готовый листинг там же.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Почему бы вам не попробовать?

Фигурные скобки здесь не применить, будет ошибка синтаксиса, это же не строка.

Используйте круглые скобки или функцию call_user_func:
('action_'.$field)();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы