echo
dělá OKAMŽITÉ výstup. Pokud se pokusíte echo funkce, která sama dělá echo, echo funkce se provede PRVNÍ. např.
function foo() {
echo 'foo';
}
echo 'bar' . foo(); // output foobar
a provede se jako ekvivalent
echo 'foo';
echo 'bar';
Proč? Protože echo
nejprve musí zkonstruovat výstupní řetězec. Tedy před bar
může být echo, rodičovský echo musí volat foo()
. Tato funkce nic nevrací, pouze provádí vlastní echo. více echo
hovory se vzájemně nekoordinují, takže foo's echo dělá svůj výstup. pak foo nevrací nic do rodičovského echa, takže děláte echo 'bar' . null
a výstup bar
.
Pokud jste měli toto:
function bar() {
return 'bar';
}
echo 'foo' . bar();
fungovalo by to podle očekávání. Sekvence provádění by byla:
$temp = bar(); // $temp gets string'bar'
echo 'foo' . $temp;
echo 'foo' . 'bar';
echo 'foobar';
-> output foobar