¿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?


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".


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 .


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 ("::").


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"


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 ()".


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"


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.


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".


4
$a->b 

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

$a->b()

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


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.


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".


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 .


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".


0

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



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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.