В 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.