В PHP, почему эхо не было реализовано как функция? (не эхо против printf)

Мне просто интересно. В PHP почему не было echo реализован как функция? Почему PHP просто не дал нам printf и никогда не рассказывать о echo? Обратите внимание, что:

  • Это не вопрос о echo против printf,
  • Я уже знал что echo это языковая конструкция

ОБНОВЛЕНИЕ: Кстати, был printf реализовано с использованием echo?

3 ответа

Эхо - это языковая конструкция. Функция использует языковую конструкцию для выполнения своей работы. Объяснение - не совсем моя специальность, но действие Google привело меня к этой теме:

В чем разница между языковой конструкцией и "встроенной" функцией в PHP?

Некоторый важный контент:

...

Это корень того, почему вы не можете переопределить языковые конструкции, такие как echo или print: они эффективно жестко закодированы в синтаксический анализатор, тогда как функции отображаются на набор языковых конструкций, и анализатор позволяет вам изменять это отображение при компиляции или время выполнения, чтобы заменить ваш собственный набор языковых конструкций или выражений.

...

Эхо не является функцией, и оно не возвращает значение, например print. Печать также является языковой конструкцией - не требует скобок.

Manual: echo - значение не возвращается. print - всегда возвращает 1

Факт остается фактом: возвращение значения снижает производительность системы.

Итак... теперь, так как printf является функцией (которая возвращает длину выведенной строки), ответ, который я считаю очевидным.

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

Другие вопросы по тегам