echo语句的操作顺序

时间:2012-02-27 21:23:45

标签: php

这是我的代码:

<?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语句)的评估 ..解析
..解析

那是关闭吗?

有人知道“操作顺序”吗?

3 个答案:

答案 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