6
votes

En PHP, pourquoi l'écho n'a-t-il pas été mis en œuvre en tant que fonction? (pas echo vs. printf)

Je suis juste curieux. En PHP, pourquoi ECHO est-il implémenté comme fonction? Pourquoi PHP n'a-t-il pas simplement donné printf et ne parle jamais de echo ? Veuillez noter que:

  • Ce n'est pas une question sur echo vs. printf .
  • Je savais déjà que echo est une construction de langue.

    Mise à jour: d'ailleurs, était printf implémenté à l'aide de echo ?


2 commentaires

Pourquoi semble-t-il que la plupart des gens essaient de répondre ou de verrouiller cela n'ont même pas lu la question complètement?


(SourceCode) Révision de la tête de formated_print.c


3 Réponses :


0
votes

echo est une construction de langue. Fonction Utilisez la langue de la langue pour faire leur travail. Expliquer n'est pas exactement ma spécialité, mais une action Google m'a amené à ce sujet:

est la différence entre une construction de langues et une fonction "intégrée" dans php?

Quelques contenus importants:

...

C'est la racine de la raison pour laquelle vous ne pouvez pas redéfinir les constructions de langue comme Echo ou imprimer: ils sont effectivement codés dans l'analyseur, tandis que les fonctions sont mappées à un ensemble de constructions linguistiques et l'analyseur vous permet de modifier cette cartographie à compiler ou exécuter pour substituer votre propre ensemble de constructions de langue ou d'expressions.

...


2 commentaires

Merci. J'ai déjà lu ça avant. Mais je suis juste curieux pourquoi l'équipe PHP exposée echo , une construction de langue que je vois rarement dans un autre langage de programmation, au lieu de l'envelopper dans une fonction (IIRC, Python modifié Imprimer fonctionner dans la version 3).


@HAI MINH NGUYEN: Eh bien, je ne pense pas que Rasmus Lerdorf, Zeev Suraska ou Andi Gutmans en sont là. Je pense que comme les créateurs initiaux de PHP, seuls ils pouvaient donner une réponse satisfaisante à la raison pour ce comportement. (Ils en avaient probablement un, mais il est caché dans les brumes du temps de nous, de simples mortels;)))



1
votes

echo n'est pas une fonction et il ne renvoie pas une valeur comme l'impression. Imprimer est une construction de langue aussi - ne nécessite pas de parenthèse.

manuel: ECHO - Aucune valeur n'est renvoyée. Imprimer - retourne 1, toujours.

Le fait reste que le retour d'une valeur dégrade la performance du système.

donc .. Maintenant, puisque Printf est une fonction (qui retourne la longueur de la chaîne de sortie) la réponse que je crois est évidente.


1 commentaires

Aussi, vous pouvez utiliser: echo $ var1, $ var2, $ var3; Cela évite la concaténation.



-1
votes

Juste une supposition sauvage, mais c'est peut-être parce que PHP était utilisé comme des fichiers binaires CGI. Il serait donc de faciliter la création de scripts Shell de portage, puisque vous pouvez utiliser le binaire ECHO dans ceux.


0 commentaires