у меня есть:
echo $test->getNum1(); echo $test->getNum2(); echo $test->getNum9();
как я могу сделать что-то:
for(i=0;i<10;i++){ echo $test->getNum . $i .(); }
for(i=0;i<10;i++){ $method = 'getNum' . $i; echo $test->$method(); }
В дополнение к ответу Алекса , вы также можете указать имя переменной для функции, используя call_user_func или call_user_func_array. Они принимают callback в качестве первого аргумента, так что вы можете указать строку внутри этого. В этом случае вы можете сделать что-то вроде следующего:
call_user_func
call_user_func_array
for($i=0; $i<10; $i++){ $method = array($test, 'getNum' . $i); echo call_user_func($method); }
Этот будет самым простым и надежным (то есть, если вы не хотите писать еще 5 строк с api отражения):
for($i=0; $i<10; $i++) { echo call_user_func(array($test, "getNum{$i}")); }
for ($i = 0; $i < 10; $i++) { echo eval('$text->getNum'.$i.'()'); }