コアがエコーではなく印刷を使用するのはなぜですか?


24

私はどこかで読んだ、そしてそれはどこ、私は覚えていないechoし、データを出力する、より効率的な方法ですprint

Drupalコアはなぜそんなに使用printするのですか?その背後に特別な理由はありますか?


1
補足:printは常に値として1を返しますが、echoは何も返しません。場合によっては役に立つかもしれません。
バート

それはどのような場合ですか?
jayarjo

私もそう思いました!良い質問!
11

回答:


25

echoアカデミック環境でのみ高速です。違いは非常にわずかです。私が行った簡単なベンチマーク:2000以上のノードを持つテーブルから1つの行をフェッチする時間は1ユニットです。

1ユニットの改善を得るには、約3.700.000(3ミリオン以上)のprintステートメントをに置き換える必要がありechoます。言い換えると、パフォーマンスの改善が必要な場合、これはほとんど開始する場所ではありません。

そのprint場合、はるかに広い範囲のケースで使用できると見られecho、最初の方法にはいくつかの利点があります。次の3つのオプションがあります。

  • 常に使用する print
  • echo可能な場合は使用し、フォールバックprint
  • 使用echo常にしている場合、あなたのコードをリファクタリングecho、それを使用するために、使用することはできません

Drupalは最初にデフォルトになりました。

これが選ばれた理由に関するあなたの実際の質問に答えるために:それはそうではありませんでした。単純にこのように成長しました。


エコーを使用できない場合の例を教えてください。現時点では想像できません。
jayarjo

6
最も明白なのはif (! print some_method() ) {print some_other_method()}です。実際に何かを印刷した場合、printはTRUEを返すため。Echoは何も返さないため、これも高速です。もう1つの例return print $somevalueは、メソッドの最後にステータスを返すことです。
バーク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.