¿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".
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 .
¡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 ("::").
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 ()".
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"
@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 =newFoo();
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.
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:
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.
//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 .
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".
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.
Respuestas:
El nombre oficial es "operador de objeto" - T_OBJECT_OPERATOR . Yo lo llamo "flecha".
fuente
T_DOUBLE_COLON
. Te haré +1 cuando tenga más votos :)$a->do()
es "El método de A hacer" y$a->thing
es la "Cosa de propiedad de A", por lo que es relativo.T_PAAMAYIM_NEKUDOTAYIM
exactamente significa "doble colon" en hebreo.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 .
fuente
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 ("::").
fuente
Al leer el código para mí, lo considero una "cosa posesiva".
Por ejemplo:
leería "el valor de x es igual al valor de y"
fuente
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 ()".
fuente
->
en C / C ++ donde tiene una funcionalidad diferente del operador de punto real?Operador de propiedades.
Cuando leo
$a->b()
o en$a->b
voz alta, solo digo "llame a b en el $ a obj" o "obtenga b de / en / de $ a"fuente
Personalmente, me gusta ser detallado al expresar mi código verbalmente.
p.ej:
leería como tal:
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.
fuente
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".fuente
Llamo como "parámetro b de $ a".
Llamo como "función b de $ a".
fuente
La flecha simple se puede referir fácilmente verbalmente como lo que significa para PHP OOP: Miembro. Entonces, para
$a->var
usted 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:
Entonces, si tuviera que leer en voz alta este bloque de código como una demostración de código, diría esto:
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:
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.
fuente
El desarrollador senior de PHP donde trabajo dice "flecha".
Cuando me dice que escriba lo anterior, me dice "Dólar A flecha B" o
"Dólar A flecha B parens".
fuente
Lo haría así:
En mi libro ( PHP Master de Lorna Mitchell) se llama el operador de objeto .
fuente
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:
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".
fuente
Objeto. Entonces
$a->$b->$c
sería 'A objeto B objeto c'.fuente
->
es el operador de propiedad utilizado para PHP en modo orientado a objetos.fuente
user187291 ha respondido a la pregunta no subjetiva, en cuanto a la subjetiva, digo "sub". Por ejemplo, yo diría
$x->y
como "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.fuente