2010-08-30 4 views
5

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

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

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

+1

Почему кажется, что большинство людей, пытающихся ответить или заблокировать это, даже не прочитали вопрос полностью? –

+2

* (исходный код) * [HEAD revision of formatted_print.c] (http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/formatted_print.c?view=markup) – Gordon

ответ

0

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

What is the difference between a language construct and a "built-in" function in PHP?

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

...

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

...

+0

Спасибо. Я читал это раньше. Но мне просто интересно, почему команда PHP открыла 'echo', конструкцию языка, которую я редко вижу на другом языке программирования, вместо того, чтобы обернуть ее в функцию (IIRC, Python изменил' print' для работы в версии 3). –

+2

@Hai Minh Nguyen: Ну, я не думаю, что Расмус Лердорф, Зеев Сураски или Анди Гутманс здесь, в SO. Я думаю, что как первоначальные создатели PHP, только они могли бы дать удовлетворительный ответ на * причину * для этого поведения. (У них, вероятно, был один, но он скрыт в тумане времени от нас, простые смертные;)) – Piskvor

1

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

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

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

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

+0

Также вы можете использовать: echo $ var1, $ var2, $ var3; Это позволяет избежать конкатенации. –

-1

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

 Смежные вопросы

  • Нет связанных вопросов^_^