echo
hace salida INMEDIATA. Si intenta hacer eco de una función que a su vez hace un eco, el eco de la función se ejecuta PRIMERO. por ejemplo
function foo() {
echo 'foo';
}
echo 'bar' . foo(); // output foobar
y se ejecuta como el equivalente de
echo 'foo';
echo 'bar';
¿Por qué? Porque echo
primero tiene que construir la cadena de salida. Así que antes de la bar
se puede hacer eco, el eco padre tiene que llamar a foo()
. Esa función no devuelve nada, simplemente realiza su propio eco. múltiples echo
las llamadas no se coordinan entre sí, por lo que el eco de foo hace su salida. luego foo no devuelve nada al eco principal, por lo que está haciendo echo 'bar' . null
y salida bar
.
Si tuvieras esto:
function bar() {
return 'bar';
}
echo 'foo' . bar();
funcionaría como se esperaba. La secuencia de ejecución sería:
$temp = bar(); // $temp gets string'bar'
echo 'foo' . $temp;
echo 'foo' . 'bar';
echo 'foobar';
-> output foobar