私はただ興味があります。PHPでは、なぜecho
関数として実装されなかったのですか?なぜPHPは私たちに教えてくれずprintf
、決して教えてくれなかったのecho
ですか?その点に注意してください:
echo
これはvs.についての質問ではありませんprintf
。echo
私はそれが言語構造であることをすでに知っていました。
更新:ちなみに、?printf
を使用して実装されましたecho
私はただ興味があります。PHPでは、なぜecho
関数として実装されなかったのですか?なぜPHPは私たちに教えてくれずprintf
、決して教えてくれなかったのecho
ですか?その点に注意してください:
echo
これはvs.についての質問ではありませんprintf
。echo
私はそれが言語構造であることをすでに知っていました。更新:ちなみに、?printf
を使用して実装されましたecho
Echo は関数ではなく、print のように値を返しません。Print も言語構造です - 括弧は必要ありません。
手動: エコー - 値が返されません。print - 常に 1 を返します。
値を返すとシステムのパフォーマンスが低下するという事実は変わりません。
だから..今、printfは関数(出力された文字列の長さを返す)であるため、私が信じている答えは明らかです。
エコーは言語構造です。関数は言語構造を使用して仕事をします。説明することは私の専門ではありませんが、Google のアクションによってこのトピックにたどり着きました。
いくつかの重要な内容:
...
これが、echo や print などの言語構造を再定義できない理由の根源です。関数は言語構造のセットにマップされ、パーサーはコンパイル時にそのマッピングを変更できるのに対し、それらはパーサーに効果的にハードコードされています。ランタイムを使用して、独自の言語構造または式のセットを置き換えます。
...
勝手な推測ですが、おそらく PHP が CGI バイナリとして存在していたためでしょう。したがって、シェルスクリプトでエコーバイナリを使用できるため、シェルスクリプトの移植が容易になります。