¿Cómo interpolar manualmente una cadena? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

¿Cómo reemplazar variable en cadena con valor en php? 10 respuestas

La única forma en que he encontrado para interpolar una cadena (es decir, expandir las variables dentro de ella) es la siguiente:

$str = 'This is a $a';
$a = 'test';
echo eval('return "' . $str . '";');

Tenga en cuenta que en un escenario de la vida real, las cadenas se crean en diferentes lugares, por lo que no puedo reemplazarlas's con"s.

¿Hay una mejor manera de expandir una cadena entre comillas simples sin el uso de eval ()? Estoy buscando algo que PHP mismo proporcione.

tenga en cuenta: Usar strtr () es como usar algo como sprintf (). Mi pregunta es diferente a la pregunta vinculada en la posible sección duplicada de esta pregunta, ya que estoy dejando que la cadena controle cómo (es decir, a través de qué llamadas de función o accesores de propiedades) quiere obtener el contenido.

Respuestas a la pregunta(3)

Su respuesta a la pregunta