Получи случайную криптовалюту за регистрацию!

Продвинутая интерполяция Иногда в длинную строку нужно подста | Пых

Продвинутая интерполяция

Иногда в длинную строку нужно подставить константы / статические свойства или результаты функций / статических методов.

Первой на ум приходит интерполяция, но в PHP она невозможна без переменной, даже при использовании фигурных скобок. То есть вот так нельзя: echo "Число Эйлера: {M_E}". Можно для всех выражений объявить переменные и уже их интерполировать, но получится слишком громоздко. Можно оформить через sprintf, но в многочисленных безымянных %s и %20$d будет легко запутаться.

Костыль Выход есть! Присвоим переменной имя функции strval. Мы получили "интерполятор" callable(mixed): string, при помощи которого в литерал можно подставить любое приводимое к строке выражение:

$intrp = 'strval';
echo "Число Эйлера: {$intrp(M_E)}";

Если пойти чуть дальше и обернуть sprintf в класс с __invoke, зафиксировав первый аргумент (partial application!), получится мощный универсальный интерполятор.

https://3v4l.org/DogHB