这是我的代码:
<?php
class Test_Class {
public function Show() {
return "Test_Class->Show() function";
}
}
class Test_Class2 {
public function Show() {
echo "Test_Class2->Show() function";
}
}
$var1 = new Test_Class();
$var2 = new Test_Class2();
echo "var1 :: " . $var1->Show() . "<br />";
echo "var2 :: " . $var2->Show() . "<br />";
?>
这是输出:
var1 :: Test_Class->Show() function
Test_Class2->Show() functionvar2 ::
您会注意到返回字符串的类的结果会显示在正常情况下,而 echo的字符串的类会显示在该字符串之前echo语句,它被调用。
现在,我知道它首先得到处理,这就是它首先出现的原因。但是如何看待较低的水平呢?
这与以下内容类似:
..解析
..解析
......嘿!和echo声明,让我们解析它!
......嘿!我们正在解析的这个echo语句里面是一个对象的方法,现在让我们解析一下
........在这个方法中有一个回声,所以让我们来评估一下
(输出的内部回声声明)
....我们完成了对echo语句(输出外部echo语句)的评估
..解析
..解析
那是关闭吗?
有人知道“操作顺序”吗?
答案 0 :(得分:5)
字符串在执行期间连接在一起。字符串必须在回显之前构建。
如果您希望从左到右回显声部,请使用逗号:
echo "var1 :: ", $var1->Show() , "<br />";
echo "var2 :: " , $var2->Show() , "<br />";
/* output:
var1 :: Test_Class->Show() function
var2 :: Test_Class2->Show() function
*/
答案 1 :(得分:4)
这与解析无关。
echo
需要一个论点;在知道该参数之前不能调用它。在第二个示例中,该参数由两个串联操作组成。必须在参数已知之前执行这些操作。因此,必须首先评估这些连接操作的参数。因此,在执行任何连接之前评估$var2->Show()
。
答案 2 :(得分:3)
您的订单非常正确。在调用实际的echo
函数之前,必须评估echo
右侧的所有内容。这意味着从您的参数调用将首先输出的函数调用的任何echo
。