Ответ 1
Вы можете выполнять функции в строке HEREDOC с помощью выражений переменной {$
. Однако вам необходимо заранее определить переменную для имени функции:
$number_format = "number_format";
$table .= <<<EOT
<tr>
<td>{$row['my_number']}</td> // WORKS
<td>$myNumber</td> // WORKS
<td>{$number_format($row['my_number'])}</td> // DOES NOT WORK!
</tr>
Таким образом, этот вид побеждает цель Герредоса в отношении терпения.
Для удобства чтения для этой цели может быть еще более полезно определить общее имя функции /void, например $expr = "htmlentities";
. Тогда вы можете использовать почти любое сложное выражение и все глобальные функции в heredoc или doublequotes:
" <td> {$expr(number_format($num + 7) . ':')} </td> "
И я думаю, что {$expr(
является более очевидным для всех, кто сталкивается с такой конструкцией. (В противном случае это просто странное обходное решение.)