Передайте переменную в имя метода в переполнении стека

Я пытаюсь вызвать метод, где часть имени я хочу в переменной. Как я могу это сделать, потому что код, который у меня сейчас не работает?

$actionName = 'Index';

// object creating...
$action = 'action' . $actionName();
$object->$action;

Ошибка:

Fatal error: Call to undefined function index() in ...

0

Решение

Вы не можете вызывать методы PHP таким образом. Вам нужно использовать call_user_func сделать это.

Пример:

call_user_func([$object, 'action' . $actionName]/*,$param1, $param2, $param3*/)
//             ^ Callable                       ^ Optional parameters
1

Другие решения

Вам необходимо добавить () к вызовам переменных методов.

$actionName = 'Index';

$object->{"action" . $actionName}();
// or
$action = 'action' . $actionName;
$object->$action();

Пример:

class test { function sts() { return "hey"; } }
$tst = new test;
$met = "sts";
echo $tst->$met();
0

По вопросам рекламы [email protected]