¿Cómo se llama el operador PHP "->" y cómo se dice al leer el código en voz alta? [cerrado]

127

¿Cómo se llama a este ->operador de flecha que se encuentra en PHP?

Es un signo menos, un guión o un guión seguido de un signo mayor que (o el galón derecho).

¿Cómo se pronuncia al leer el código en voz alta?

Jake
fuente
12
¿Por qué se ha cerrado esta pregunta como un duplicado de una pregunta que se vincula a esta pregunta para responderla?
Ben
1
En C ++, el operador "->" se llama "miembro del puntero", pero el operador PHP "->" está realmente más cerca del "." operador en C ++ y que se llama "miembro del objeto".
user34660

Respuestas:

134

El nombre oficial es "operador de objeto" - T_OBJECT_OPERATOR . Yo lo llamo "flecha".

usuario187291
fuente
9
Tenga en cuenta que el token léxico no siempre se refiere a ese token. Por ejemplo, el nombre de :: es el "operador de resolución de alcance" pero aparece en ese artículo como T_DOUBLE_COLON. Te haré +1 cuando tenga más votos :)
Billy ONeal
1
Bueno, suena raro si lees "Y después de que B ejecuta y devuelve el salario, A flecha C". Será más como A se refiere a C.
Ben
66
Billy tiene razón, la mayoría de la gente llama al :: a T_PAAMAYIM_NEKUDOTAYIM en una conversación informal
Alan Storm el
3
Diría que $a->do()es "El método de A hacer" y $a->thinges la "Cosa de propiedad de A", por lo que es relativo.
Martin Lyne
1
Por cierto, T_PAAMAYIM_NEKUDOTAYIMexactamente significa "doble colon" en hebreo.
Neta
59

Yo lo llamo " dardo "; como en $Foo->bar(): "Foo dart bar"

Como muchos idiomas usan "punto" como en " Foo.bar();yo quería una palabra de una sílaba". ¡"Arrow" es demasiado largo! ;)

Dado que PHP usa ."punto" para la concatenación (¿por qué?) No puedo decir con seguridad "punto", podría confundir.

Hablando con un compañero de trabajo hace un tiempo, decidimos "dardo" como una palabra lo suficientemente similar a "punto" para fluir cómodamente, pero lo suficientemente distinta (al menos cuando lo decimos) para no ser confundido con un "punto" concatenante .

Paraguas
fuente
1
¡Me gusta eso! +1 para ti Supongo que hay algún peligro de arrastrar "dardo" al "punto" cuando se habla en voz alta. Lástima que la "flecha" esté probablemente mucho más arraigada.
Phil Perry
Bien, esta es la respuesta que probablemente usaré en mi cabeza. Buena justificación de tu respuesta.
Liam
Recordaré esto con seguridad.
Chev
Entiendo si dices flecha ... Estoy completamente perdido si mencionas dardo
Emeka Mbah
39

Al leer el código PHP en voz alta, no pronuncio el operador "->". En $db->prepare($query);su mayoría digo "Db [pausa corta] preparar consulta". Así que supongo que lo digo como una coma en una oración regular.

Lo mismo ocurre con los Paamayim Nekudotayim ("::").

selfawaresoup
fuente
10
El Paamayah, ¿qué? jk
ValleyDigital
1
También conocido como el operador de resolución de alcance
CommandZ
1
Me gusta llamar a Paamayim Nekudotayim ("::") "CoCo" como abreviatura de "colon colon"
Paraguas
14

Al leer el código para mí, lo considero una "cosa posesiva".

Por ejemplo:

x->value = y->value

leería "el valor de x es igual al valor de y"

Dan Mantyla
fuente
9

Muy a menudo, utilizo alguna variación en el método de @Tor Valamo ("el método B de A" o el "método B de A"), pero a veces digo "punto". Por ejemplo, "llamar a un punto B ()".

Sprugman
fuente
55
Siempre digo "un punto b" porque así es en casi todos los demás idiomas. Los desarrolladores PHP y no PHP siempre parecen entenderme.
Gareth el
1
Sí, vuelvo a "punto", ya que logra lo mismo que el operador de punto en la mayoría de los otros idiomas. La pregunta entonces es, ¿cómo se llama ->en C / C ++ donde tiene una funcionalidad diferente del operador de punto real?
meagar
4

Operador de propiedades.

Cuando leo $a->b()o en $a->bvoz alta, solo digo "llame a b en el $ a obj" o "obtenga b de / en / de $ a"

Tor Valamo
fuente
1
@ Tor, supongo, "Operador de método" también.
Marcus Adams
@Marcus Adams: en realidad no, ya que los métodos son solo propiedades que resultan ser funciones en la mayoría de los idiomas. Sin embargo, solo en PHP, hay una gran distinción, pero aún así lo llamaría una propiedad.
Tor Valamo
4

Personalmente, me gusta ser detallado al expresar mi código verbalmente.

p.ej:

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

leería como tal:

echo (/ print) la propiedad de la barra del objeto foo.

Es detallado y requiere más tiempo, pero descubro que si hay una razón para que exprese mi código verbalmente, entonces probablemente necesito tener claro qué estoy comunicando exactamente.

Craige
fuente
Me temo que me has perdido, Tomasz. :/ ¿Qué quieres decir?
Craige
4

Volviendo al Cobol 'in' donde dirías "Mueve 5 a b en a". La mayoría de los idiomas hoy califican las cosas en la otra dirección.

Sin embargo, todavía leería $a->b();como "Llamada b en a".

Don
fuente
4
$a->b 

Llamo como "parámetro b de $ a".

$a->b()

Llamo como "función b de $ a".

ganu
fuente
3

La flecha simple se puede referir fácilmente verbalmente como lo que significa para PHP OOP: Miembro. Entonces, para $a->varusted diría "Object a's member var".

Al leer el código en voz alta, es útil leer con anticipación (referencia anticipada, lo siento) y saber a qué se refiere realmente. Por ejemplo, tengamos el siguiente bit de código:

<?php
  Class MyClass {
    $foo = 0;

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

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

Entonces, si tuviera que leer en voz alta este bloque de código como una demostración de código, diría esto:

"Definir clase 'MyClass', llave abierta. La variable 'foo' es igual a cero, terminar la línea. Definir la función pública 'barra' abrir-cerrar paréntesis, llave abierta. Devolver la variable miembro 'foo' del objeto 'esto', terminar la línea . Cerrar-llave, cerrar-llave. Instanciar una nueva instancia de 'MyClass' (sin argumentos) como objeto variable 'myobject', terminar línea. Llamar al método miembro 'bar' del objeto 'myobject', terminar línea ".

Sin embargo, si estuviera leyendo el código en voz alta para que otros estudiantes o programadores lo copiaran sin un visual, entonces diría:

"PHP etiqueta abierta (completa), nueva línea, sangría, Clase MyClass abra-llave, nueva línea. Sangría, ['signo de dólar' | 'Marcador de objeto'] foo es igual a 0, punto y coma, nueva línea, nueva línea. Barra de función pública abierta- paréntesis, paréntesis abierto, nueva línea. Sangría, devuelva ['signo de dólar' | 'Marcador de objeto'] esta flecha foo, punto y coma, nueva línea. Sangría inversa, paréntesis cerrada, nueva línea, sangría inversa, paréntesis cerrado , nueva línea, nueva línea. ['signo de dólar' | 'Marcador de objeto'] miobjeto es igual a nuevos paréntesis de apertura-cierre de MyClass, punto y coma, nueva línea. ['signo de dólar' | 'Marcador de objeto'] barra de flecha de miobjeto abrir-cerrar paréntesis, punto y coma, nueva línea. Sangría inversa, etiqueta de cierre PHP ".

Donde ves ['signo de dólar' | 'Marcador de objeto'], simplemente elige el que sueles hablar por '$', cambio entre los dos con frecuencia, solo depende de mi audiencia.

Entonces, para resumir, en PHP, -> se refiere a un miembro de un objeto, ya sea una variable, otro objeto o un método.

usuario253780
fuente
1

El desarrollador senior de PHP donde trabajo dice "flecha".

$A->B;

Cuando me dice que escriba lo anterior, me dice "Dólar A flecha B" o

$A->B();

"Dólar A flecha B parens".

Marcus Adams
fuente
1

Lo haría así:

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

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

En mi libro ( PHP Master de Lorna Mitchell) se llama el operador de objeto .

Julian
fuente
1

El japonés tiene una partícula conveniente para esto, "no" (の). Es la partícula posesiva, que significa aproximadamente "relacionada con el término anterior".

"Tejón de Fred" significa "tejón de Fred".

Lo cual es un largo camino para decir que, al menos mentalmente, y también entre aquellos que entienden japonés, tiendo a diferenciarlos al leerlos como:

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

Pero leer ambos como "posesivos" posesivos también funciona para los hablantes no japoneses. También puede voltearlos y usar "de", así que "D de C" ... pero eso es un poco incómodo, y es difícil hacerlo, está leyendo rápidamente porque interrumpe su flujo lineal.

Sin embargo, si estuviera dictando, tal vez cuando empareje la codificación y sugiera qué escribir, me referiría a los caracteres específicos como "guión mayor que la flecha" y "dos puntos" (si conozco a la persona con la que estoy hablando) es un PHPophile, podría llamarlo un "doble punto paamayim nekudotayim" la primera vez, en parte porque es una broma genial, en parte para evitar que me "corrijan".

Dewi Morgan
fuente
0

Objeto. Entonces $a->$b->$csería 'A objeto B objeto c'.

Mbrevda
fuente
0

-> es el operador de propiedad utilizado para PHP en modo orientado a objetos.

Jordan Hudgens
fuente
0

user187291 ha respondido a la pregunta no subjetiva, en cuanto a la subjetiva, digo "sub". Por ejemplo, yo diría $x->ycomo "x sub y" - "sub" en este contexto es la abreviatura de "subíndice". Esto es más apropiado para la notación de matriz; $x['y']También pronuncio "x sub y". Por lo general, cuando leo el código en voz alta, estoy usando mis palabras para identificar una línea que el otro desarrollador puede ver, por lo que la ambigüedad aún no se ha convertido en un problema. Creo que la causa es que veo las estructuras / objetos y matrices como "colecciones", y sus elementos están subcriptados como en notación matemática.

Iiridayn
fuente