echo
прави НЕЗАБАВЕН изход. Ако се опитате да повторите функция, която сама прави ехо, ехото на функцията се изпълнява ПЪРВО. напр.
function foo() {
echo 'foo';
}
echo 'bar' . foo(); // output foobar
и се изпълнява като еквивалент на
echo 'foo';
echo 'bar';
Защо? Защото echo
първо трябва да конструира низа, който се извежда. Така че преди bar
може да бъде ехо, родителското ехо трябва да извика foo()
. Тази функция не връща нищо, тя просто изпълнява свое собствено ехо. множество echo
повикванията не се координират помежду си, така че ехото на foo прави своя изход. тогава foo не връща нищо към родителското ехо, така че вие правите echo 'bar' . null
и извежда bar
.
Ако сте имали това:
function bar() {
return 'bar';
}
echo 'foo' . bar();
ще работи както се очаква. Последователността на изпълнение ще бъде:
$temp = bar(); // $temp gets string'bar'
echo 'foo' . $temp;
echo 'foo' . 'bar';
echo 'foobar';
-> output foobar