PHP: Интерполяция

Вспомним, как работает конкатенация. Для этого мы соединяем нужные строки (или переменные со строками внутри) с помощью точки ..

<?php

$firstName = 'Joffrey';
$greeting = 'Hello';

print_r($greeting . ", " . $firstName . "!");
// => Hello, Joffrey!

Но при этом в сложных выражениях становится трудно сразу увидеть, какой текст получится на выходе. Особенно если в строке используются пробелы, запятые или кавычки: они начинают мешать восприятию. Даже текущий пример требует небольшого напряжения, чтобы понять, какая получится строка.

По этой причине во многих языках существует операция, которая называется интерполяцией. Интерполяция представляет собой способ встраивать значения переменных прямо внутрь строки. В PHP она работает в строках с двойными кавычками. Вот так:

<?php

$firstName = 'Joffrey';
$greeting = 'Hello';

print_r("{$greeting}, {$firstName}!");
// => Hello, Joffrey!

Имена переменных записываются внутри строки в фигурных скобках, и PHP автоматически подставляет нужные значения:

$firstName = 'Joff'
$greeting  = 'Hello'

"{$greeting}, {$firstName}!"
  └────┬────┘  └────┬─────┘
   'Hello'      'Joff'
      └──────┬──────┘
      'Hello, Joff!'

Сравните эти два примера рядом:

<?php

print_r($greeting . ", " . $firstName . "!");
print_r("{$greeting}, {$firstName}!");

Второй вариант проще и понятнее.

В одной строке можно делать сколько угодно блоков с фигурными скобками. Важно помнить: интерполяция работает только в двойных кавычках. Строка в одинарных кавычках выводится как есть, без подстановки значений:

<?php

$firstName = 'Joffrey';

print_r('Hello, {$firstName}!');
// => Hello, {$firstName}!

Пример

<?php

$school = 'Hexlet';

$whatIsIt = "{$school} - online courses";
print_r($whatIsIt); // => Hexlet - online courses

Такая запись легко читается: пробелы, дефисы и символы видны сразу. Строка выглядит именно так, как она появится в выводе. Это делает код понятным и удобным в поддержке. По этой причине в большинстве языков интерполяция является более предпочтительной, чем конкатенация.

Почему это важно

Интерполяция предпочтительнее конкатенации почти во всех современных языках программирования. Она:

  • Упрощает структуру строк.
  • Улучшает читаемость кода.
  • Снижает количество ошибок при работе с пробелами и знаками препинания.

Задание

Интернет-магазин отправляет покупателю подтверждение заказа. Имя покупателя и номер заказа уже хранятся в переменных — нужно подставить их в шаблон сообщения с помощью интерполяции.

Используйте переменные $username и $orderNumber, чтобы вывести на экран:

Здравствуйте, Анна! Ваш заказ #1337 принят.

Полезное

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются