echo
robi wyjście NATYCHMIASTOWE. Jeśli spróbujesz wywołać echo funkcji, która sama wykonuje echo, echo funkcji wykonuje PIERWSZE. np.
function foo() {
echo 'foo';
}
echo 'bar' . foo(); // output foobar
i wykonuje się jako odpowiednik
echo 'foo';
echo 'bar';
Czemu? Ponieważ echo
najpierw musi skonstruować wyprowadzany ciąg. Więc przed bar
może zostać powtórzone, echo nadrzędne musi wywołać foo()
. Ta funkcja niczego nie zwraca, po prostu wykonuje własne echo. wiele echo
wywołania nie koordynują się ze sobą, więc echo foo wykonuje swoje wyjście. następnie foo nie zwraca nic do rodzica echo, więc wykonujesz echo 'bar' . null
i wypisz bar
.
Gdybyś to miał:
function bar() {
return 'bar';
}
echo 'foo' . bar();
to działałoby zgodnie z oczekiwaniami. Sekwencja wykonania byłaby następująca:
$temp = bar(); // $temp gets string'bar'
echo 'foo' . $temp;
echo 'foo' . 'bar';
echo 'foobar';
-> output foobar