Warum verwendet der Core eher Print als Echo?


24

Ich habe irgendwo gelesen und weiß nicht mehr, wo, das echoist eine effizientere Art, Daten auszugeben print.

Warum verwendet Drupal Core printso viel? Gibt es dafür einen besonderen Grund?


1
Nebenbei: print gibt immer 1 als Wert zurück, echo gibt nichts zurück. Ich denke, das könnte in einigen Fällen nützlich sein.
Bart

Was für ein Fall könnte das sein?
Jayarjo

Ich habe mich das auch gefragt! Gute Frage!
Am

Antworten:


25

echoist nur im akademischen Umfeld schneller. Der Unterschied ist sehr gering. Ein kurzer Benchmark, den ich gerade gemacht habe: Das Abrufen einer Zeile aus einer Tabelle mit mehr als 2000 Knoten dauert 1 Einheit.

Um eine Verbesserung von 1 Einheit zu erzielen, müsste ich ungefähr 3.700.000 (über 3 Millionen) printAussagen durch ersetzen echo. Mit anderen Worten, wenn Sie die Leistung verbessern möchten, ist dies kaum der richtige Ort, um anzufangen.

Wenn man bedenkt, dass printdies in einer viel größeren Bandbreite von Fällen angewendet werden kann echo, hat das erstere einige Vorteile. Sie haben drei Möglichkeiten:

  • Verwenden Sie immer print
  • Verwenden Sie echowo möglich und greifen Sie aufprint
  • Verwenden Sie echoimmer und überarbeiten Sie Ihren Code, wenn er echonicht verwendet werden kann, um ihn zu verwenden

Drupal hat auf dem ersten Standard.

Um Ihre eigentliche Frage zu beantworten, warum dies gewählt wurde: Es war nicht. Es ist einfach so gewachsen.


Können Sie ein Beispiel angeben, wenn das Echo nicht verwendet werden kann? Es ist nur, dass ich mir im Moment keine vorstellen kann.
Jayarjo

6
Das offensichtlichste ist if (! print some_method() ) {print some_other_method()}. Da print ein TRUE zurückgibt, wenn es tatsächlich etwas gedruckt hat. Echo gibt nichts zurück, weshalb es auch schneller ist. Ein weiteres Beispiel, das Sie sehen werden, befindet sich return print $somevalueam Ende einer Methode zum Zurückgeben des Status.
Berkes
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.