私はただ興味があります。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 バイナリとして存在していたためでしょう。したがって、シェルスクリプトでエコーバイナリを使用できるため、シェルスクリプトの移植が容易になります。