echo
fait une sortie IMMÉDIATE. Si vous essayez de faire écho à une fonction qui fait elle-même un écho, l'écho de la fonction s'exécute EN PREMIER. ex.
function foo() {
echo 'foo';
}
echo 'bar' . foo(); // output foobar
et s'exécute comme l'équivalent de
echo 'foo';
echo 'bar';
Pourquoi? Parce que echo
doit d'abord construire la chaîne en sortie. Donc avant bar
peut être répercuté, l'écho parent doit appeler foo()
. Cette fonction ne renvoie rien, elle effectue simplement son propre écho. plusieurs echo
les appels ne se coordonnent pas les uns avec les autres, donc l'écho de foo fait sa sortie. puis foo ne renvoie rien au parent echo, donc vous faites echo 'bar' . null
, et affichez bar
.
Si vous aviez ceci :
function bar() {
return 'bar';
}
echo 'foo' . bar();
cela fonctionnerait comme prévu. La séquence d'exécution serait :
$temp = bar(); // $temp gets string'bar'
echo 'foo' . $temp;
echo 'foo' . 'bar';
echo 'foobar';
-> output foobar