Что касается php 5 , вы можете использовать синтаксис с фигурными привязками:
$pages->{$request[2]}();
Простой пример для воспроизведения:
<?php
$request = [
2 => 'test'
];
class Pages
{
function test()
{
return 1;
}
}
$pages = new Pages();
echo $pages->{$request[2]}();
Альтернативно (как вы отметили в вопросе):
$methodName = $request[2];
$pages->$methodName();
Цитата из php.net для php 7 case:
Косвенный доступ к переменным, свойствам и методам теперь будет оцениваться строго в порядке слева направо, в отличие от предыдущего сочетания особых случаев.
Также есть таблица для разностей php 5 и php 7 для этого вопроса чуть ниже цитаты в документах, которые я здесь привел.
Какие вещи вы должны учитывать:
- Проверить значение
$request[2]
( действительно ли это строка ? ). - Проверьте свою версию php ( это php 5+ или php 7+ ? ).
- Ознакомьтесь с руководством по функциям переменной для вашего выпуска.