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?


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.