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 принят.Полезное
Ваше упражнение проверяется по этим тестам
<?php
namespace HexletBasics\AdvancedStrings\Interpolation;
use HexletBasics\Exercise\TestCase;
class SolutionTest extends TestCase
{
public function test()
{
$expected = 'Здравствуйте, Анна! Ваш заказ #1337 принят.';
$this->assertOutput($expected);
}
}Решение учителя откроется через:
20:00
