echo
produce IMMEDIATO. Se si tenta di eseguire l'eco di una funzione che a sua volta esegue un'eco, l'eco della funzione viene eseguito per PRIMO. es.
function foo() {
echo 'foo';
}
echo 'bar' . foo(); // output foobar
e viene eseguito come l'equivalente di
echo 'foo';
echo 'bar';
Come mai? Perché echo
prima deve costruire la stringa in uscita. Quindi prima di bar
può essere ripetuto, l'eco genitore deve chiamare foo()
. Quella funzione non restituisce nulla, esegue semplicemente la propria eco. più echo
le chiamate non si coordinano tra loro, quindi l'eco di foo fa il suo output. quindi foo non restituisce nulla all'eco genitore, quindi stai facendo echo 'bar' . null
e genera bar
.
Se avessi questo:
function bar() {
return 'bar';
}
echo 'foo' . bar();
funzionerebbe come previsto. La sequenza di esecuzione sarebbe:
$temp = bar(); // $temp gets string'bar'
echo 'foo' . $temp;
echo 'foo' . 'bar';
echo 'foobar';
-> output foobar