Php echo语句的操作顺序

Php echo语句的操作顺序,php,Php,这是我的密码: <?php class Test_Class { public function Show() { return "Test_Class->Show() function"; } } class Test_Class2 { public function Show() { echo "Test_Class2->Show() function"

这是我的密码:

<?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 />";
?>
您会注意到,返回字符串的类的结果显示在它通常显示的位置,而echo的字符串的类的结果显示在调用它的echo语句之前

现在,我知道它首先被处理,这就是为什么它首先出现的原因。但在较低的层面上,这是如何看待的呢

这是类似于:
.. 解析
.. 解析
.... 嘿和echo语句,让我们解析它
...... 嘿在我们正在解析的echo语句中是一个对象的方法,现在让我们来解析它
........ 在这个方法中有一个回音,所以让我们来评估一下 (输出的内部回显语句)
..我们完成了对echo语句的评估(输出外部echo语句)
.. 解析
.. 解析

很近吗


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

这与解析无关


echo
需要一个参数;在知道该参数之前,不能调用它。在第二个示例中,该参数由两个串联操作组成。这些操作必须在参数已知之前执行。因此,必须首先计算这些连接操作的参数。因此,
$var2->Show()
会在执行任何连接之前进行计算。

您的顺序非常正确。在调用实际的
echo
函数之前,必须评估
echo
右侧的所有内容。这意味着从参数调用的函数调用的任何
echo
s都将首先输出。

在执行过程中串接字符串。必须先构建字符串,然后才能对其进行回显

如果希望零件从左到右回显,请使用逗号:

echo "var1 :: ", $var1->Show() , "<br />";
echo "var2 :: " , $var2->Show() , "<br />";

/* output:

var1 :: Test_Class->Show() function
var2 :: Test_Class2->Show() function

*/
echo“var1::”,$var1->Show(),“
”; echo“var2::”,$var2->Show(),“
”; /*输出: var1::Test_Class->Show()函数 var2::Test_Class2->Show()函数 */
是的,它就是这样工作的。在字符串完全连接之前,PHP实际上不会回显任何内容,这涉及到运行
Show
方法。因为它在方法内部遇到了一个回音,所以它会立即输出,即使调用似乎出现在“外部”回音之后。是的,我就是这么想的。这似乎是允许程序员决定如何处理结果的方法/函数的合理理由。例如,简单地返回字符串,而不是随意地重复它。是的,你击中了头上的钉子。如果可能,您通常希望最小化函数的外部影响量。函数式编程语言以“纯”函数或没有任何副作用的函数的概念将这一点发挥到了极致。使用相同参数调用的纯函数将始终返回相同的值,而不执行其他操作。这样做的好处是可以更容易地对给定函数的实际功能进行推理。因此,尽管PHP允许您在任何地方
回显
,但如果您尽可能直观地回显,它会使代码更易于维护。祝贺您,您现在有2013次重复,祝您新年快乐:)哇。。多年来我一直在使用echo,但我以前从未这样使用过它。谢谢
echo "var1 :: ", $var1->Show() , "<br />";
echo "var2 :: " , $var2->Show() , "<br />";

/* output:

var1 :: Test_Class->Show() function
var2 :: Test_Class2->Show() function

*/