Что делает echo в php?

#php #html #server-side

#php #HTML #на стороне сервера

Вопрос:

Я новичок в 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 amp;amp; this.status == 200) {
                    document.getElementById("output").innerHTML = this.responseText;
                }
            };
            xmlhttp.open("GET", "backend.php", true);
            xmlhttp.send();
        }
    </script>
</body>
</html>
  

backend.php:

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

Первое echo (то, что в index.php ) действует аналогично document.write в js: он что-то отображает. Эхо в backend.php однако, похоже, это responseText .

Что именно происходит? Передает ли echo в backend.php компилируется в обычный текст? Если да, становится ли это автоматически текстом ответа?

Комментарии:

1. Все они являются «обычным текстом»: echo просто печатает все, что вы просили, это не несет никакой дополнительной семантики.

2. Вам нужно подумать о различных слоях, работающих в вашем приложении.

3. Отличное место, чтобы узнать о подобных вещах, находится в руководстве по PHP: php.net/manual/en/function.echo.php

4. Echo отправляет вывод в выходной буфер, если он встроен в HTML (который также отправляется в выходной буфер), тогда кажется, что он записывает это в «источник». Что он в принципе и делает, но только потому, что также выводится исходный код. Итак, во втором примере выводится только echo, в первом — комбинация HTML и PHP по мере выполнения.

Ответ №1:

Echo просто выводит строки, которые ему заданы, при просмотре в браузере он будет выводить строки в браузер, если это через командную строку, то он будет выводить строки в командную строку.

В index.php и backend.php echo делает одно и то же в обоих, разница в том, что вы отправляете запрос GET для получения содержимого backend.php однако вы просматриваете index.php эхо прямо в браузере.

Если вы непосредственно просматриваете backend.php в вашем браузере вы увидите echo таким же образом, как index.php .

Конечно, чаще всего вы возвращаете JSON-ответ с некоторыми данными в backend.php использование json /_encode для отображения с использованием JS в индексе.

Я надеюсь, что это помогло

Редактировать: чтобы ответить вам напрямую, компиляция не происходит, echo просто распечатывает строку. Однако да, строка echo является ответом

Ответ №2:

Echo просто отправляет строки в выходной буфер. Есть много других «вещей», которые делают это, таких как print , printf и var_export , var_dump print_r для массивов и т.д. У каждого свои «черты».

Что вас смущает между этими двумя, так это то, что вы пренебрегаете тем фактом, что HTML в файле PHP выводится при чтении этого файла. Таким образом, с echo встроенным в это при выводе HTML-кода он попадает на фрагмент PHP-кода, и сервер выполняет это, что приводит к небольшому выводу там, затем он продолжает выводить HTML. Итак, в конце вы получаете свой вывод HTML PHP в качестве исходного кода.

Во втором примере единственным выводом является echo в PHP. Но оба отправляются в выходной буфер, который в конечном итоге отправляется как тело ответа обратно клиенту.

Надеюсь, это имеет смысл.