Pourquoi le noyau utilise-t-il l'impression plutôt que l'écho?

24

J'ai lu quelque part, et je ne me souviens pas où, c'est alors echoun moyen plus efficace de produire des données print.

Pourquoi le noyau Drupal utilise- printt-il autant? Y a-t-il une raison particulière à cela?

jayarjo
la source
1
Sur un sidenote: print renverra toujours 1 comme valeur, echo ne renverra rien. Je suppose que cela pourrait être utile dans certains cas.
Bart
Quel genre de cas cela pourrait être?
jayarjo
Je me le demande aussi! Bonne question!
aendrew

Réponses:

25

echoest seulement plus rapide dans les environnements académiques. La différence est très marginale. Un benchmark rapide que je viens de faire: Le temps de récupération d'une ligne d'une table avec plus de 2000 nœuds est de 1 unité.

Afin d'obtenir une amélioration de 1 unité, je devrais remplacer environ 3.700.000 (plus de 3 millions) de printdéclarations par echo. En d'autres termes, si vous souhaitez améliorer les performances, ce n'est pas le bon point de départ.

Vu que cela printpeut être utilisé dans un éventail beaucoup plus large de cas echo, le premier présente certains avantages. Il vous laisse trois options:

  • Toujours utiliser print
  • Utiliser echosi possible et se replierprint
  • Utilisez echotoujours et refactorisez votre code s'il echone peut pas être utilisé, pour l'utiliser

Drupal a par défaut le premier.

Pour répondre à votre question réelle sur la raison pour laquelle cela a été choisi: Ce n'était pas le cas. Il a simplement grandi de cette façon.

berkes
la source
Pourriez-vous fournir un exemple de cas où l'écho ne peut pas être utilisé? C'est juste que je ne peux pas en imaginer pour le moment.
jayarjo
6
Le plus évident est if (! print some_method() ) {print some_other_method()}. Puisque print retourne TRUE s'il a réellement imprimé quelque chose. Echo ne renvoie rien, c'est pourquoi il est aussi plus rapide. Un autre exemple que vous verrez est return print $somevalueà la fin d'une méthode pour renvoyer le statut.
berkes