Wie heißt der PHP-Operator "->" und wie sagt man das, wenn man Code laut vorliest? [geschlossen]

127

Wie nennt man diesen pfeilähnlichen ->Operator in PHP?

Es ist entweder ein Minuszeichen, ein Bindestrich oder ein Bindestrich, gefolgt von einem Größer-als-Zeichen (oder einem rechten Chevron).

Wie spricht man es aus, wenn man Code laut vorliest?

Jake
quelle
12
Warum wurde diese Frage als Duplikat einer Frage geschlossen, die mit dieser Frage verknüpft ist, um sie zu beantworten?
Ben
1
In C ++ heißt der Operator "->" "Mitglied des Zeigers", aber der PHP-Operator "->" ist tatsächlich näher am "." Operator in C ++ und das heißt "Mitglied des Objekts".
user34660

Antworten:

134

Der offizielle Name lautet " Objektoperator " - T_OBJECT_OPERATOR . Ich nenne es "Pfeil".

Benutzer187291
quelle
9
Beachten Sie, dass das lexikalische Token nicht immer das ist, worauf sich dieses Token normalerweise bezieht. Der Name von :: ist beispielsweise der "Bereichsauflösungsoperator", wird jedoch in diesem Artikel als aufgeführt T_DOUBLE_COLON. Ich werde +1 an Sie, wenn ich noch mehr Stimmen bekomme :)
Billy ONeal
1
Hört sich komisch an, wenn Sie lesen "Und nachdem B das Gehalt ausgeführt und zurückgegeben hat, A Pfeil C". Es wird eher so sein, als würde sich A auf C beziehen.
Ben
66
Billy hat recht, die meisten Leute nennen das :: a T_PAAMAYIM_NEKUDOTAYIM in ungezwungenen Gesprächen
Alan Storm
3
Ich würde sagen, es $a->do()ist "A's Methode Do" und $a->thingist "A's Property Thing", also ist es relativ.
Martin Lyne
1
Übrigens T_PAAMAYIM_NEKUDOTAYIMbedeutet auf Hebräisch genau "Doppelpunkt".
Neta
59

Ich nenne es " Dart "; wie in $Foo->bar(): "Foo Dart Bar"

Da viele Sprachen wie in "Punkt" verwenden, Foo.bar();wollte ich ein einsilbiges Wort verwenden. "Arrow" ist einfach zu langatmig! ;)

Da PHP ."Punkt" für die Verkettung verwendet (warum?), Kann ich nicht sicher "Punkt" sagen - es könnte verwirren.

Als wir uns vor einiger Zeit mit einem Kollegen unterhielten, entschieden wir uns für "Dart" als ein Wort, das "Punkt" ähnlich genug ist, um bequem zu fließen, aber deutlich genug (zumindest wenn wir es sagen), um nicht mit einem verkettenden "Punkt" verwechselt zu werden. .

Regenschirm
quelle
1
Ich mag es! +1 für dich. Ich nehme an, es besteht die Gefahr, dass "Dart" in "Punkt" verwischt wird, wenn man laut spricht. Schade, dass "Pfeil" wahrscheinlich viel fester verwurzelt ist.
Phil Perry
Schön, das ist die Antwort, die ich am wahrscheinlichsten in meinem Kopf verwenden werde. Gute Begründung Ihrer Antwort.
Liam
Ich werde mich sicher daran erinnern.
Chev
Ich verstehe, wenn Sie Pfeil sagen ... Ich bin völlig verloren, wenn Sie Dart erwähnen
Emeka Mbah
39

Beim Vorlesen von PHP-Code spreche ich den Operator "->" nicht aus. Denn $db->prepare($query);ich sage meistens "Db [kurze Pause] Abfrage vorbereiten." Ich spreche es also wie ein Komma in einem regulären Satz.

Gleiches gilt für die Paamayim Nekudotayim ("::").

selfawaresoup
quelle
10
Die Paamayah was? jk
ValleyDigital
1
Sonst bekannt als Scope Resolution Operator
CommandZ
1
Ich nenne Paamayim Nekudotayim ("::") "CoCo" gerne als Abkürzung für "Colon Colon"
Umbrella
14

Wenn ich mir den Code vorlese, halte ich ihn für eine "besitzergreifende Sache".

Beispielsweise:

x->value = y->value

würde lesen "x Wert ist gleich y Wert"

Dan Mantyla
quelle
9

Meistens verwende ich eine Variation der Methode von @Tor Valamo ("die B-Methode von A" oder "A's B-Methode"), aber manchmal sage ich "Punkt". ZB "A Punkt B () aufrufen".

Sprugman
quelle
5
Ich sage immer "a dot b", weil es in so ziemlich jeder anderen Sprache so ist. PHP- und Nicht-PHP-Entwickler scheinen mich immer zu verstehen.
Gareth
1
Ja, ich greife auf "Punkt" zurück, da dies in den meisten anderen Sprachen dasselbe wie der Punktoperator bewirkt. Dann stellt sich die Frage, wie Sie ->C / C ++ aufrufen, wo es eine andere Funktionalität als der eigentliche Punktoperator hat.
Meagar
4

Immobilienbetreiber.

Beim Lesen $a->b()oder $a->blaut sage ich einfach "call b on the $ a obj" oder "get b from / in / of $ a".

Tor Valamo
quelle
1
@Tor, ich denke, "Methodenoperator" auch.
Marcus Adams
@Marcus Adams - Nicht wirklich, da Methoden nur Eigenschaften sind, die in den meisten Sprachen Funktionen sind. Allein in PHP gibt es einen großen Unterschied, aber ich würde es trotzdem eine Eigenschaft nennen.
Tor Valamo
4

Ich persönlich mag es, meinen Code mündlich auszudrücken.

z.B:

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

würde als solche lesen:

echo (/ print) die bar-Eigenschaft des Objekts foo.

Es ist ausführlich und zeitaufwändiger, aber wenn es einen Grund gibt, meinen Code mündlich auszudrücken, muss ich wahrscheinlich klar sein, was ich genau kommuniziere.

Craige
quelle
Ich fürchte, du hast mich verloren, Tomasz. :/ Was meinst du?
Craige
4

Harkening zurück zum Cobol 'in', wo Sie sagen würden "Bewegen Sie 5 nach b in a." Die meisten Sprachen qualifizieren heute die Dinge in die andere Richtung.

Trotzdem würde ich immer noch $a->b();als "Call b in a" lesen .

Don
quelle
4
$a->b 

Ich nenne als "param b von $ a".

$a->b()

Ich rufe als "Funktion b von $ a" auf.

Ganu
quelle
3

Der einzelne Pfeil kann leicht verbal als das bezeichnet werden, was er für PHP OOP: Member bedeutet. So für$a->var Sie würde sagen , „Objekt ein Mitglied auf var“.

Wenn Sie Code vorlesen, ist es hilfreich, vorauszulesen (Lookahead-Referenz, sorry) und zu wissen, worauf Sie sich möglicherweise tatsächlich beziehen. Lassen Sie uns zum Beispiel das folgende Codebit haben:

<?php
  Class MyClass {
    $foo = 0;

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

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

Wenn ich diesen Codeblock als Demonstration des Codes vorlesen würde, würde ich Folgendes sagen:

"Definieren Sie die Klasse 'MyClass', offene Klammer. Die Variable 'foo' ist gleich Null, Zeile beenden. Öffentliche Funktion 'bar' definieren Klammern öffnen, schließen, Klammer öffnen. Elementvariable 'foo' des Objekts 'this' zurückgeben, Zeile beenden Klammer schließen, Klammer schließen. Neue Instanz von 'MyClass' (keine Argumente) als variables Objekt 'myobject' instanziieren, Zeile beenden. Elementmethode 'bar' des Objekts 'myobject' aufrufen, Zeile beenden. "

Wenn ich jedoch den Code vorlesen würde, damit andere Schüler oder Programmierer ihn ohne Bild kopieren können, würde ich sagen:

"PHP open tag (full), Zeilenumbruch, Einzug, Klasse MyClass offene Klammer, Zeilenumbruch. Einzug, ['Dollarzeichen' | 'Objektmarker'] foo entspricht 0, Semikolon, Zeilenumbruch, Zeilenumbruch. Öffentliche Funktionsleiste open- Klammern schließen, Klammer öffnen, Zeilenumbruch. Einzug, Rückgabe ['Dollarzeichen' | 'Objektmarkierung'] Dieser Pfeil foo, Semikolon, Zeilenumbruch. Einrückung rückwärts, enge Klammer, Zeilenumbruch rückwärts einrücken, Klammer schließen , newline, newline. ['Dollarzeichen' | 'Objektmarker'] myobject entspricht neuen MyClass-Klammern zum Öffnen und Schließen, Semikolon, Zeilenumbruch. ['Dollarzeichen' | 'Objektmarker'] myobject-Pfeilleiste open-close Klammern, Semikolon, Zeilenumbruch. Umgekehrter Einzug, PHP-Close-Tag. "

Wo Sie sehen ['Dollarzeichen' | 'Objektmarker'], wählen Sie einfach, was Sie für '$' sprechen. Ich wechsle häufig zwischen den beiden, hängt nur von meinem Publikum ab.

Zusammenfassend bezieht sich -> in PHP -> auf ein Mitglied eines Objekts, sei es entweder eine Variable, ein anderes Objekt oder eine Methode.

user253780
quelle
1

Der leitende PHP-Entwickler, bei dem ich arbeite, sagt "Pfeil".

$A->B;

Wenn er mir sagt, ich soll das Obige eingeben, sagt er "Dollar A Pfeil B" oder für

$A->B();

"Dollar A Pfeil B Parens."

Marcus Adams
quelle
1

Ich würde es so machen:

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

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

In meinem Buch ( PHP Master von Lorna Mitchell) heißt es Objektoperator .

julianisch
quelle
1

Japanisch hat dafür ein passendes Teilchen, "nein" (の). Es ist das besitzergreifende Teilchen, was ungefähr "in Bezug auf den vorhergehenden Begriff" bedeutet.

"Fred Dachs" bedeutet "Freds Dachs".

Das ist ein langer Weg zu sagen, dass ich zumindest mental und auch unter denen, die Japanisch verstehen, dazu neige, sie zu unterscheiden, indem ich sie lese als:

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

Aber beides als besitzergreifendes "'s" zu lesen, funktioniert auch für nicht-japanische Sprecher. Sie können sie auch umdrehen und "of" verwenden, also "D of C" ... aber das ist etwas umständlich, und schwer zu tun, lesen Sie schnell, weil es Ihren linearen Fluss unterbricht.

Wenn ich jedoch diktieren würde, wenn ich ein Paar codiere und vorschlage, was ich eingeben soll, würde ich die spezifischen Zeichen als "Strich größer als Pfeil" und "Doppelpunkt" bezeichnen (wenn ich die Person kenne, mit der ich spreche Um ein PHPophiler zu sein, könnte ich das beim ersten Mal als "paamayim nekudotayim Doppelpunkt" bezeichnen, teils weil es ein cooler Scherz ist, teils um zu verhindern, dass sie mich "korrigieren".

Dewi Morgan
quelle
0

Objekt. Also $a->$b->$cwäre 'A Objekt B Objekt c'.

Mbrevda
quelle
0

-> ist der Eigenschaftsoperator, der für PHP im objektorientierten Modus verwendet wird.

Jordan Hudgens
quelle
0

user187291 hat die nicht subjektive Frage beantwortet, während ich für die subjektive Frage "sub" sage. Zum Beispiel würde ich $x->yals "x sub y" aussprechen - "sub" ist in diesem Zusammenhang die Abkürzung für "tiefgestellt". Dies ist besser für die Array-Notation geeignet. $x['y']Ich spreche auch "x sub y" aus. Wenn ich Code laut vorlese, benutze ich normalerweise meine Wörter, um eine Zeile zu identifizieren, die der andere Entwickler sehen kann, sodass die Mehrdeutigkeit noch kein Problem darstellt. Ich glaube, die Ursache ist, dass ich Strukturen / Objekte und Arrays als "Sammlungen" betrachte und Elemente davon wie in der mathematischen Notation tiefgestellt sind.

Iiridayn
quelle