Mkramer, извини что туплю, но реально никак не пойму а без полного понимания как то пальцем в небо получается... Про строковые константы вразумительной информации не нашел. Ты говоришь "в том числе - при возврате из функции", это как понимать? интерпретатор видит что строка получена из функции и поэтому рассматривает строку как константу? Хоть убейте не врублюсь никак.
ты просто выводишь строку. в этой строке есть доллар и две буквы эр. Это не переменная. Это набор байтов. Чтобы она стала переменной, нужно, чтобы строку сожрал интерпретатор и интерпретировал. А не просто вывел. Он не интерпретирует все символы при выводе. Он их просто выводит. А интерпретирует пхп-файлы. Есть функция eval(), но она опасна до чертиков. Я тебе рекомендую плейсхолдеры типа %alala% и подстановку из массива по ключам.
Совсем по простому. Переменные подставляются в строки только когда буквально так написано в исходном тексте программы: Код (Text): $a = 12; $b = "$a это хорошо"; У тебя в коде просто некий метод возвращает уже готовую строку '$r чегой-тотам'. В этом случае интерпретатор воспринимает её как есть, точно так же, как если бы она была в одинарных кавычках в коде программы. Так понятно?
Понятно, если доллар и две буквы r пришли в функцию из вне то это не переменная а просто доллар и две буквы r как будто там есть невидимые кавычки. Так и запишем