sorry_i_noob
@sorry_i_noob

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

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

Возможно ли такое в php?
  • Вопрос задан
  • 121 просмотр
Решения вопроса 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)();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 19:40
5000 руб./за проект
24 апр. 2024, в 19:18
50000 руб./за проект
24 апр. 2024, в 19:05
15000 руб./за проект