Comment s'appelle l'opérateur PHP «->» et comment le dire lorsque vous lisez du code à voix haute? [fermé]

127

Comment appelle-t-on cet ->opérateur à la recherche de flèche trouvé en PHP?

Il s'agit d'un signe moins, d'un tiret ou d'un trait d'union suivi d'un signe supérieur à (ou d'un chevron droit).

Comment le prononcez-vous lorsque vous lisez du code à voix haute?

Jake
la source
12
Pourquoi cette question a-t-elle été fermée comme un double d'une question qui renvoie à cette question pour y répondre?
Ben
1
En C ++, l'opérateur "->" est appelé "membre du pointeur" mais l'opérateur PHP "->" est en fait plus proche du "." opérateur en C ++ et qui est appelé "membre de l'objet".
user34660

Réponses:

134

Le nom officiel est "opérateur objet" - T_OBJECT_OPERATOR . Je l'appelle "flèche".

user187291
la source
9
Notez que le jeton lexical n'est pas toujours ce à quoi ce jeton est généralement appelé. Par exemple, le nom de :: est l '"opérateur de résolution de portée" mais il est répertorié dans cet article sous la forme T_DOUBLE_COLON. Je vous attribuerai +1 lorsque j'aurai plus de votes :)
Billy ONeal
1
Eh bien, cela semble bizarre si vous lisez "Et après que B exécute et retourne le salaire, une flèche C". Ce sera plus comme A se réfère à C.
Ben
66
Billy a raison, la plupart des gens appellent le :: a T_PAAMAYIM_NEKUDOTAYIM dans une conversation informelle
Alan Storm
3
Je dirais que c'est comme $a->do()"la méthode de A Do" et $a->thing"la propriété de A Thing", donc c'est relatif.
Martin Lyne
1
Btw, T_PAAMAYIM_NEKUDOTAYIMsignifie exactement "double deux points" en hébreu.
Neta
59

Je l'appelle " fléchette "; comme dans $Foo->bar(): "Foo dart bar"

Étant donné que de nombreuses langues utilisent "dot" comme Foo.bar();je voulais utiliser un mot d'une syllabe. "Arrow" est tout simplement trop long! ;)

Puisque PHP utilise ."dot" pour la concaténation (pourquoi?), Je ne peux pas dire "point" en toute sécurité - cela pourrait semer la confusion.

En discutant avec un collègue il y a quelque temps, nous avons choisi «dart» comme un mot assez similaire à «dot» pour couler confortablement, mais suffisamment distinct (du moins quand nous le disons) pour ne pas être confondu avec un «point» concaténant .

Parapluie
la source
1
J'aime ça! +1 pour vous. Je suppose qu'il y a un risque de faire glisser "dart" dans "dot" en parlant à haute voix. Dommage que la "flèche" soit probablement beaucoup plus ancrée.
Phil Perry
Bien, c'est la réponse que je serai le plus susceptible d'utiliser dans ma tête. Bonne justification de votre réponse.
Liam
Je m'en souviendrai à coup sûr.
Chev
Je comprends si vous dites flèche ... Je suis complètement perdu si vous parlez de fléchettes
Emeka Mbah
39

Lors de la lecture du code PHP à haute voix, je ne prononce pas l'opérateur "->". Car $db->prepare($query);je dis surtout «Db [courte pause] prépare la requête». Donc je suppose que je le parle comme une virgule dans une phrase régulière.

Il en va de même pour les Paamayim Nekudotayim ("::").

groupe de sécurité
la source
10
Le Paamayah quoi? jk
ValleyDigital
1
Autrement connu sous le nom d' opérateur de résolution de portée
CommandZ
1
J'aime appeler Paamayim Nekudotayim ("::") "CoCo" comme abréviation de "colon colon"
Umbrella
14

Quand je lis le code pour moi-même, j'y pense comme une "chose possessive".

Par exemple:

x->value = y->value

lireait "la valeur de x est égale à la valeur de y"

Dan Mantyla
la source
9

Le plus souvent, j'utilise une variante de la méthode de @Tor Valamo («la méthode B de A» ou «la méthode B de A»), mais je dis parfois «point». Par exemple, "appeler A point B ()".

sprugman
la source
5
Je dis toujours "un point b" parce que c'est comme ça dans presque toutes les autres langues. Les développeurs PHP et non-PHP semblent toujours me comprendre.
Gareth
1
Oui, je retombe sur "point" car il accomplit la même chose que l'opérateur point dans la plupart des autres langages. La question devient alors, qu'appelez-vous ->en C / C ++ où il a des fonctionnalités différentes de l'opérateur point réel?
meagar
4

Opérateur de propriété.

En lisant $a->b()ou à $a->bvoix haute, je dis simplement "appeler b sur le $ a obj" ou "obtenir b de / dans / de $ a"

Tor Valamo
la source
1
@Tor, je suppose, "opérateur de méthode" également.
Marcus Adams
@Marcus Adams - Pas vraiment, car les méthodes ne sont que des propriétés qui se trouvent être des fonctions dans la plupart des langages. En PHP seul cependant, il y a une grande distinction, mais je l'appellerais toujours une propriété.
Tor Valamo
4

Personnellement, j'aime être verbeux en exprimant mon code verbalement.

par exemple:

$foo = new Foo();
echo $foo->bar

se lirait comme tel:

echo (/ print) la propriété bar de l'objet foo.

C'est verbeux et prend plus de temps, mais je trouve que s'il y a une raison pour que j'exprime mon code verbalement, alors j'ai probablement besoin d'être clair sur ce que je communique exactement.

Craige
la source
J'ai peur que tu m'as perdu, Tomasz. :/ Que voulez-vous dire?
Craige
4

Revenons au Cobol 'in' où vous diriez "Déplacer 5 vers b en a." La plupart des langues aujourd'hui qualifient les choses dans l'autre sens.

Pourtant, je lirais toujours $a->b();comme "Appeler b dans un".

Don
la source
4
$a->b 

J'appelle comme "param b de $ a".

$a->b()

J'appelle comme "fonction b de $ a".

ganu
la source
3

La flèche unique peut facilement être référencée verbalement comme ce qu'elle signifie pour PHP OOP: Member. Donc pour$a->var vous diriez "var membre de l'objet a".

Lorsque vous lisez du code à haute voix, il est utile de lire à l'avance (référence anticipée, désolé) et de savoir à quoi vous faites peut-être référence. Par exemple, nous allons avoir le bit de code suivant:

<?php
  Class MyClass {
    $foo = 0;

    public function bar() {
      return $this->foo;
    }
  }

  $myobject = new MyClass();
  $myobject->bar();
?>

Donc, si je devais lire à haute voix ce bloc de code comme démonstration de code, je dirais ceci:

"Définir la classe 'MaClasse', accolades ouvertes. La variable 'foo' est égale à zéro, terminer la ligne. Définir la fonction publique 'bar' parenthèses ouvertes-fermées, accolades ouvertes. Renvoyer la variable membre 'foo' de l'objet 'this', terminer la ligne . Accolades fermées, accolades fermées. Instanciez une nouvelle instance de 'MyClass' (sans arguments) en tant qu'objet variable 'myobject', terminez la ligne. Appelez la méthode membre 'bar' de l'objet 'myobject', terminez la ligne. "

Cependant, si je lisais le code à haute voix pour que d'autres étudiants ou programmeurs le copient sans visuel, je dirais:

"Balise ouverte PHP (complète), nouvelle ligne, retrait, classe MyClass accolade ouverte, nouvelle ligne. Retrait, ['dollar-sign' | 'Object-marker'] foo est égal à 0, point-virgule, nouvelle ligne, nouvelle ligne. Barre de fonctions publique ouverte- fermer les parenthèses, accolades ouvertes, retour à la ligne. Retrait, retour ['signe-dollar' | 'marqueur d'objet'] cette flèche toto, point-virgule, nouvelle ligne. Retrait inversé, accolade fermée, nouvelle ligne, retrait inverse, accolade fermée , newline, newline. ['dollar-sign' | 'Object-marker'] myobject est égal à new MyClass open-close parenthèses, point-virgule, nouvelle ligne. ['dollar-sign' | 'Object-marker'] myobject arrow bar open-close parenthèses, point-virgule, nouvelle ligne. Retrait inversé, balise de fermeture PHP. "

Où vous voyez ['dollar-sign' | 'Object-marker'], choisissez simplement celui que vous avez tendance à parler pour '$', je passe fréquemment entre les deux, cela dépend juste de mon public.

Donc, pour résumer, en PHP, -> fait référence à un membre d'un objet, que ce soit une variable, un autre objet ou une méthode.

user253780
la source
1

Le développeur PHP senior où je travaille dit "flèche".

$A->B;

Quand il me dit de taper ce qui précède, il dira "Flèche B dollar A" ou pour

$A->B();

"Dollar A arrow B parens."

Marcus Adams
la source
1

Je le ferais comme ceci:

//Instantiated object variable with the name mono call property name
$mono->name;

//Instantiated object variable with the name mono call method ship
$mono->ship();

Dans mon livre ( PHP Master par Lorna Mitchell), il s'appelle l' opérateur objet .

julien
la source
1

Le japonais a une particule pratique pour cela, "non" (の). C'est la particule possessive, c'est-à-dire à peu près «relative au terme précédent».

"Fred の badger" signifie "Fred's blaireau".

Ce qui est loin de dire qu'au moins mentalement, et aussi parmi ceux qui comprennent le japonais, j'ai tendance à les différencier en les lisant comme:

$A->B(); // "Call $A's B."
C::D();  // "Call C の D."

Mais lire les deux comme un "s" possessif fonctionne aussi, pour les non-japonais. Vous pouvez aussi les retourner et utiliser "of", donc "D of C" ... mais c'est un peu gênant, et difficile à faire, vous lisez rapidement car cela rompt votre flux linéaire.

Si je dictais, cependant, peut-être lors du codage par paires et en suggérant quoi taper, je ferais référence aux caractères spécifiques comme "tiret supérieur à la flèche" et "double-virgule" (si je connais la personne à qui je parle to est un PHPophile, je pourrais appeler cela un "paamayim nekudotayim double-deux-points" la première fois, en partie parce que c'est une blague sympa, en partie pour les empêcher de "me corriger").

Dewi Morgan
la source
0

Objet. Ce $a->$b->$cserait donc «Un objet B objet c».

Mbrevda
la source
0

-> est l'opérateur de propriété utilisé pour PHP en mode orienté objet.

Jordan Hudgens
la source
0

user187291 a répondu à la question non subjective, quant à la question subjective, je dis "sous". Par exemple, je prononcerais $x->ycomme "x sous y" ​​- "sous" dans ce contexte est l'abréviation de "indice". Ceci est plus approprié pour la notation de tableau; $x['y']Je prononce aussi "x sub y". En règle générale, lorsque je lis du code à voix haute, j'utilise mes mots pour identifier une ligne que l'autre développeur peut voir, de sorte que l'ambiguïté n'est pas encore devenue un problème. Je crois que la cause est que je considère les structures / objets et les tableaux comme des "collections", et leurs éléments sont en indice comme en notation mathématique.

Iiridayn
la source