Почему строковая интерполяция работает только в переполнении стека в двойных кавычках

Я заметил через программирование в PHP, что интерполяция строк ("blah blah ${foo}") работает только в двойных кавычках ("...").

Например, эта строка будет работать:

$bar = "foo";
echo "I like ${bar}";

>> I like foo

Но этот не будет:

$bar = "foo";
echo 'I like ${bar}';

>> I like ${bar}

Я понимаю что Руководство по PHP говорит о том факте, что интерполяция применяется только в таких строках, но не объясняет, почему она была выбрана таким образом.

Так что это мой вопрос — Зачем это то, что интерполяция строк работает только в строках с двойными кавычками в PHP?

0

Решение

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

Взять, к примеру, следующую строку кода:

$currency = "$USD";

Это создает уведомление «неопределенная переменная» и $currency пустая строка Определенно не то, что вы хотите.

Вы мог избежать этого ("\$USD"), но эй, это бред.

Таким образом, PHP, как дизайнерское решение, выбрал интерполяцию строк в двойных кавычках, а строк в одинарных кавычках — нет.

3

Другие решения

Так работает по определению. Вот как это было сделано для работы. Нет «почему», кроме того, как разработчики PHP решили реализовать эту функцию.

-3

По вопросам рекламы [email protected]