34 votes

Pourquoi un point, ".", et non un symbole plus, "+", pour la concaténation des chaînes de caractères en PHP ?

Pourquoi les concepteurs de PHP ont-ils décidé d'utiliser le point / la virgule / le ". comme opérateur de concaténation des chaînes de caractères plutôt que le symbole plus habituel "+" ?

Y a-t-il un avantage à cela, ou une raison quelconque ? Ou ont-ils simplement aimé le faire ? :o)

35voto

Ben James Points 41165

La syntaxe de PHP est influencée par Perl. . est l'opérateur de concaténation de chaînes de caractères en Perl.

Dans un langage faiblement typé, il y a des avantages à avoir des opérateurs de concaténation de chaînes de caractères et d'addition numérique différents : celui que vous utilisez influencera le type auquel le langage contraint les variables.

Il se trouve que Perl 6 utilisera un tilde ~ au lieu d'un point . pour la concaténation de chaînes de caractères, car . sera utilisé pour l'accès aux membres de l'objet. Il semble donc que les concepteurs de Perl pensent maintenant que c'était un mauvais choix.

Peut-être qu'à l'époque où Perl et PHP n'étaient pas orientés objet, cela semblait être un choix aussi bon qu'un autre. Peut-être que les concepteurs de ces deux langages n'ont jamais envisagé qu'ils deviennent des langages OO forts.

Quant à savoir si PHP se débarrassera un jour de ses -> syntaxe d'accès aux membres pour . qui sait ?

24voto

Daniel May Points 5060

La raison la plus évidente est probablement que PHP hérite d'une grande partie de sa syntaxe de Perl - et Perl utilise un point ( . ) pour la concaténation de chaînes de caractères.

Mais nous pouvons aller plus loin et comprendre pourquoi cela a été implémenté en Perl - l'option + est le plus souvent utilisé pour les équations mathématiques - il n'est utilisé pour la concaténation que dans les langages dans lesquels le type de variable peut définir le mode de fonctionnement de l'opérateur (explication simple, exemple : C#).

var intAddition = 1 + 2;
Console.WriteLine(intAddition); // Prints 3
var stringConcat = "1" + "2";
Console.WriteLine(stringConcat); // Prints "12"

^ Comme vous pouvez le constater, le + est utilisé à la fois pour la concaténation et l'addition en C#.


Peut-être que le raisonnement se situe à un niveau inférieur et qu'il est dû à l'algèbre booléenne de l'entreprise. portes logiques - + signifie OR dans les portes logiques, tandis que . est utilisé comme le AND ce qui est logique lorsqu'il s'agit de concaténation de chaînes de caractères.

Il est logique d'avoir deux opérateurs distincts, l'un pour la concaténation et l'autre pour l'addition. Il est juste regrettable que ces deux opérateurs puissent être confondus à cause d'autres langues.

21voto

Paul Hsieh Points 1240

Je ne suis pas un expert en PHP, mais, comment faire autrement pour différencier ces deux dernières lignes ?

$first  = 100;
$second = 20;
$stringresult     = $first . $second; // "10020"
$arithmeticresult = $first + $second; // 120

13voto

Sarfraz Points 168484

Logiquement + est utilisé pour les chiffres. Alors qu'un point est utilisé pour concaténer deux phrases (chaînes de caractères) dans un paragraphe par exemple. Le point est donc utilisé pour concaténer des chaînes de caractères. C'est donc assez logique, je crois. C'est mieux comme ça...

7voto

Joey Points 148544

L'utilisation du point comme opérateur de concaténation de chaînes de caractères en PHP remonte probablement à Perl. Rappelez-vous que PHP n'était rien de plus qu'un ensemble de scripts Perl.

Il est également logique d'avoir des opérateurs de concaténation et d'addition de chaînes distincts, en particulier dans les langages faiblement typés. Il y a déjà assez de pièges en PHP pour se tirer une balle dans le pied, vous n'avez pas besoin d'en ajouter un autre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X