В PHP, почему эхо не было реализовано как функция?(не эхо против printf) - PullRequest
5 голосов
/ 30 августа 2010

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

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

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

Ответы [ 3 ]

1 голос
/ 30 августа 2010

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

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

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

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

0 голосов
/ 30 августа 2010

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

0 голосов
/ 30 августа 2010

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

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

Некоторое важное содержание:

...

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

...

...