什么是php';什么事?

什么是php';什么事?,php,html,server-side,Php,Html,Server Side,我是php的初学者,我想知道echo做什么。在不同的情况下,它似乎会做非常不同的事情。这说明了我的意思。 index.php: <!DOCTYPE html> <html> <body> <?php echo "echoed by php"; ?> <button onclick="buttonClick()">Get stuff from server</button> &l

我是php的初学者,我想知道echo做什么。在不同的情况下,它似乎会做非常不同的事情。这说明了我的意思。
index.php:

<!DOCTYPE html>
<html>
<body>
    <?php
        echo "echoed by php";
    ?>
    <button onclick="buttonClick()">Get stuff from server</button>
    <p id="output"></p>
    <script>
        function buttonClick()
        {
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    document.getElementById("output").innerHTML = this.responseText;
                }
            };
            xmlhttp.open("GET", "backend.php", true);
            xmlhttp.send();
        }
    </script>
</body>
</html>

从服务器获取内容

函数按钮单击() { var xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=函数(){ if(this.readyState==4&&this.status==200){ document.getElementById(“输出”).innerHTML=this.responseText; } }; open(“GET”,“backend.php”,true); xmlhttp.send(); }
backend.php:

<?php
    echo "stuff from server";
?>

第一个echo(index.php中的一个)的作用类似于js中的document.write:它显示一些东西。然而,backend.php中的echo似乎是responseText。


到底发生了什么?backend.php中的echo是否编译成纯文本?如果是这样,是否会自动成为响应文本?

Echo只输出给定的字符串,如果在浏览器中查看,则会将字符串输出到浏览器,如果通过命令行,则会将字符串输出到命令行

在index.php和backend.php中,echo在这两者中做的事情是相同的,不同之处在于您发送了一个GET请求来获取backend.php的内容,但是您直接在浏览器中查看index.php echo

如果您在浏览器中直接查看backend.php,您将以与index.php相同的方式看到echo

当然,更常见的情况是使用JSON/_encode返回backend.php中某些数据的JSON响应,以便在索引中使用JS显示

我希望这有帮助


编辑:为了直接回答您的问题,没有进行编译,echo只是简单地打印出字符串。但是是的,echo字符串是响应

echo只是将字符串发送到输出缓冲区。还有许多其他的“事情”可以做到这一点,比如
print
printf
var\u export
var\u dump
print\u r
数组等等。每个都有自己的“特点”

让你困惑的是,你忽略了一个事实,即PHP文件中的HTML是在读取该文件时输出的。因此,当它输出HTML时,
echo
内联到它,它会点击一些PHP代码,服务器执行这些代码,在那里产生一些输出,然后继续输出HTML。因此,最后您将得到HTML+PHP输出作为源代码

在第二个示例中,唯一的输出是PHP中的echo。但两者都会进入输出缓冲区,最终作为响应主体发送回客户机


希望这是有意义的。

它们都是“纯文本”:
echo
只需将您要求的内容打印回来,它没有任何附加语义。您需要考虑应用程序中的不同层。从PHP手册中可以找到这类内容:echo将输出发送到输出缓冲区,如果它嵌入了HTML(也被发送到输出缓冲区),那么它似乎会将其写入“源”。它基本上是这样做的,但这仅仅是因为源也在被输出。因此,在第二个示例中,唯一的输出是echo,在第一个示例中,它在执行时是HTML和PHP的组合。