Come si chiama l'operatore PHP “->” e come si dice quando si legge il codice ad alta voce? [chiuso]


127

Come si chiama questo ->operatore dall'aspetto freccia trovato in PHP?

È un segno meno, trattino o trattino seguito da un segno maggiore di (o chevron destro).

Come si pronuncia quando si legge il codice ad alta voce?


12
Perché questa domanda è stata chiusa come duplicato di una domanda che si collega a questa domanda per rispondere?
Ben

1
In C ++ l'operatore "->" è chiamato "membro del puntatore" ma l'operatore PHP "->" è in realtà più vicino al "." operatore in C ++ e che si chiama "membro dell'oggetto".
user34660

Risposte:


134

Il nome ufficiale è "operatore oggetto" - T_OBJECT_OPERATOR . Lo chiamo "freccia".


9
Si noti che il token lessicale non è sempre ciò a cui viene solitamente fatto riferimento. Ad esempio, il nome di :: è "operatore di risoluzione dell'ambito" ma è elencato in quell'articolo come T_DOUBLE_COLON. Ti faccio +1 quando ricevo altri voti :)
Billy ONeal

1
Bene, sembra strano se leggi "E dopo che B esegue e restituisce lo stipendio, una freccia C". Sarà più come A si riferisce a C.
Ben

66
Billy ha ragione, la maggior parte delle persone chiama il :: a T_PAAMAYIM_NEKUDOTAYIM in una conversazione informale
Alan Storm,

3
Direi che $a->do()è "A's method Do" ed $a->thingè "A's property Thing", quindi è relativo.
Martin Lyne,

1
A proposito, T_PAAMAYIM_NEKUDOTAYIMsignifica esattamente "doppio colon" in ebraico.
Neta,

59

Lo chiamo " dardo "; come in $Foo->bar(): "Foo dart bar"

Poiché molte lingue usano "punto" come in, Foo.bar();volevo usare una parola a una sillaba. "Arrow" è troppo prolisso! ;)

Dato che PHP usa ."punto" per la concatenazione (perché?) Non posso dire con certezza "punto" - potrebbe confondere.

Discutendo con un collega qualche tempo fa, abbiamo deciso di "dardo" come una parola abbastanza simile a "punto" per fluire comodamente, ma abbastanza distinto (almeno quando lo diciamo) per non essere confuso con un "punto" concatenante .


1
Mi piace! +1 per te. Suppongo che ci sia il pericolo di confondere "dardo" in "punto" quando si parla ad alta voce. Peccato che la "freccia" sia probabilmente molto più radicata.
Phil Perry,

Bene, questa è la risposta che molto probabilmente userò nella mia testa. Buona giustificazione della tua risposta.
Liam,

Lo ricorderò di sicuro.
Chev,

Capisco se dici freccia ... Mi perderò completamente se menzionerai il dardo
Emeka Mbah,

39

Quando leggo ad alta voce il codice PHP, non pronuncio l'operatore "->". Per $db->prepare($query);lo più dico "Db [breve pausa] preparare query". Quindi immagino di parlarlo come una virgola in una frase normale.

Lo stesso vale per Paamayim Nekudotayim ("::").


10
La Paamayah che cos'è? jk
ValleyDigital

1
Altrimenti noto come Scope Resolution Operator
CommandZ

1
Mi piace chiamare Paamayim Nekudotayim ("::") "CoCo" come abbreviazione di "colon colon"
Umbrella,

14

Quando leggo il codice per me stesso, lo considero una "cosa possessiva".

Per esempio:

x->value = y->value

leggerebbe "il valore di x è uguale al valore di y"


9

Molto spesso, uso alcune variazioni sul metodo di @Tor Valamo ("il metodo B di A" o "il metodo B di A"), ma a volte dico "punto". Ad esempio "chiama A punto B ()".


5
Dico sempre "a punto b" perché è così praticamente in ogni altra lingua. Gli sviluppatori PHP e non PHP sembrano sempre capirmi.
Gareth,

1
Sì, torno a "punto" poiché realizza la stessa cosa dell'operatore punto nella maggior parte delle altre lingue. La domanda diventa allora, come si chiama ->in C / C ++ dove ha funzionalità diverse dall'operatore punto reale?
meagar

4

Operatore immobiliare.

Durante la lettura $a->b()o ad $a->balta voce dico semplicemente "chiama b su $ a obj" o "ottieni b da / in / di $ a"


1
@Tor, immagino, anche "Operatore metodo".
Marcus Adams,

@Marcus Adams - Non proprio, visto che i metodi sono solo proprietà che sembrano essere funzioni nella maggior parte delle lingue. Solo in PHP, c'è una grande distinzione, ma la definirei comunque una proprietà.
Tor Valamo,

4

Personalmente mi piace essere verboso nell'esprimere verbalmente il mio codice.

per esempio:

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

leggerebbe come tale:

echo (/ print) la proprietà bar dell'oggetto foo.

È prolisso e richiede più tempo, ma trovo se c'è una ragione per cui esprimo verbalmente il mio codice, quindi probabilmente devo essere chiaro su cosa sto comunicando esattamente.


Temo che mi abbia perso, Tomasz. :/ Cosa intendi?
Craige,

4

Tornando al Cobol 'in' dove diresti "Sposta da 5 a b in a." La maggior parte delle lingue oggi qualificano le cose nell'altra direzione.

Eppure continuerei a leggere $a->b();come "Chiama b in a".


4
$a->b 

Chiamo come "parametro b di $ a".

$a->b()

Chiamo come "funzione b di $ a".


3

La singola freccia può essere facilmente definita verbalmente come ciò che significa per PHP OOP: Membro. Quindi, per $a->varte diresti "Object var's member var".

Quando leggi il codice ad alta voce, aiuta a leggere in anticipo (riferimento lookahead, scusa) e sapere a cosa potresti effettivamente riferirti. Ad esempio, abbiamo il seguente bit di codice:

<?php
  Class MyClass {
    $foo = 0;

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

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

Quindi, se dovessi leggere ad alta voce questo blocco di codice come dimostrazione di codice, direi questo:

"Definisci classe 'MyClass', parentesi graffa aperta. La variabile 'pippo' è uguale a zero, termina la riga. Definisce parentesi aperte 'chiudi' barra ', parentesi graffa aperta. Restituisce la variabile membro' pippo 'dell'oggetto' questo ', termina la riga Close-brace, close-brace. Crea un'istanza della nuova istanza di "MyClass" (nessun argomento) come oggetto variabile "myobject", termina la riga. Chiama il metodo membro "bar" dell'oggetto "myobject", termina la riga. "

Tuttavia, se stessi leggendo il codice ad alta voce affinché altri studenti o programmatori lo copiassero senza visual, direi:

"PHP tag aperto (completo), newline, rientro, parentesi graffe di classe MyClass, newline. Indent, ['dollar-sign' | 'Object-marker'] foo è uguale a 0, punto e virgola, newline, newline. Barra delle funzioni pubbliche open- parentesi chiuse, parentesi graffa aperta, newline. Rientro, ritorno ['segno-dollaro' | | 'Marcatore oggetto'] questa freccia foo, punto e virgola, newline. Indentazione inversa, parentesi graffa chiusa, newline, rientro-rientro, parentesi graffa stretta , newline, newline. ['dollar-sign' | | 'Object-marker'] myobject è uguale a new MyClass open-close parentesi, punto e virgola, newline. ['dollar-sign' | '' Object-marker '] myobject freccia barra apri-chiudi parentesi, punto e virgola, newline. Indentazione inversa, tag di chiusura PHP. "

Dove vedi ['simbolo del dollaro' | 'Object-marker'], scegli semplicemente quello che tendi a parlare per '$', cambio tra i due frequentemente, dipende solo dal mio pubblico.

Quindi, per riassumere, in PHP, -> si riferisce a un membro di un oggetto, sia esso una variabile, un altro oggetto o un metodo.


1

Lo sviluppatore senior di PHP dove lavoro dice "freccia".

$A->B;

Quando mi sta dicendo di digitare quanto sopra, dirà "Dollar A arrow B" o for

$A->B();

"Dollaro A freccia B. parentesi."


1

Lo farei così:

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

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

Nel mio libro ( PHP Master di Lorna Mitchell) è chiamato l' operatore oggetto .


1

Il giapponese ha una particella conveniente per questo, "no" (の). È la particella possessiva, che significa approssimativamente "relativa al termine precedente".

"Fred の badger" significa "Fred's badger".

Il che è molto lungo nel dire che almeno mentalmente, e anche tra quelli che capiscono il giapponese, tendo a differenziarli leggendoli come:

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

Ma leggere sia come "" "possessivo" funziona anche per chi non parla giapponese. Puoi anche capovolgerli e usare "of", quindi "D of C" ... ma è un po 'imbarazzante, e difficile farlo stai leggendo rapidamente perché interrompe il tuo flusso lineare.

Se dovessi dettare, però, forse quando accoppiamo il codice e suggerisco cosa digitare, farei riferimento ai caratteri specifici come "trattino maggiore della freccia" e "doppio punto" (se conosco la persona con cui sto parlando to è un PHPophile, la prima volta potrei chiamarlo "paamayim nekudotayim double-colon", in parte perché è uno scherzo freddo, in parte per impedire loro di "correggermi").


0

Oggetto. Quindi $a->$b->$csarebbe 'A oggetto B oggetto c'.


0

-> è l'operatore di proprietà utilizzato per PHP in modalità orientata agli oggetti.


0

user187291 ha risposto alla domanda non soggettiva, per quanto riguarda quella soggettiva, dico "sub". Ad esempio, vorrei pronunciare $x->ycome "x sub y" - "sub" in questo contesto è l'abbreviazione di "pedice". Questo è più appropriato per la notazione di array; $x['y']Inoltre pronuncio "x sub y". In genere quando leggo il codice ad alta voce, sto usando le mie parole per identificare una riga che l'altro sviluppatore può vedere, quindi l'ambiguità deve ancora diventare un problema. Credo che la causa sia che io considero le strutture / oggetti e le matrici come "raccolte", e i loro elementi sono sottoscritti come nella notazione matematica.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.