echo
faz saída IMEDIATA. Se você tentar ecoar uma função que faz um eco, o eco da função será executado PRIMEIRO. por exemplo. function foo() {
echo 'foo';
}
echo 'bar' . foo(); // output foobar
e é executado como o equivalente de
echo 'foo';
echo 'bar';
Por quê? Porque
echo
primeiro tem que construir a string que está sendo produzida. Então, antes de bar
pode ser ecoado, o eco pai deve chamar foo()
. Essa função não retorna nada, ela simplesmente executa seu próprio eco. vários echo
chamadas não coordenam entre si, então o echo de foo faz sua saída. então foo não retorna nada para o pai echo, então você está fazendo echo 'bar' . null
, e saída bar
. Se você tivesse isso:
function bar() {
return 'bar';
}
echo 'foo' . bar();
funcionaria como esperado. A sequência de execução seria:
$temp = bar(); // $temp gets string'bar'
echo 'foo' . $temp;
echo 'foo' . 'bar';
echo 'foobar';
-> output foobar