operators que - ¿A qué se llama el operador PHP "->" y cómo lo dice al leer el código en voz alta?




lista pdf (14)

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

¿Cómo se llama a esta flecha buscando -> operador encontrado en PHP?

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

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


Muy a menudo, uso 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, "llame A dot B ()".


Operador de propiedad

Al leer $a->b() o $a->b voz alta, solo digo "call b on the $ a obj" o "get b from / in / of $ a"


La flecha simple se puede referir verbalmente como lo que significa para PHP OOP: Member. Por lo tanto, para $a->var diría "Var de miembro de Object a".

Al leer el código en voz alta, ayuda leer con anticipación (mirar hacia adelante, lo siento), y saber a qué se refiere en realidad. 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. Variable 'foo' es igual a cero, terminar línea. Definir función pública 'barra' abrir-cerrar paréntesis, abrir abrazadera. Devolver variable miembro 'foo' del objeto 'esto', terminar línea . Cerrar-llave, llave cerrada. Crear una instancia nueva de 'MyClass' (sin argumentos) como objeto variable 'myobject', terminar línea. Llamar al método miembro 'barra' del objeto 'myobject', terminar línea.

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

"PHP open tag (full), newline, indent, Clase MyClass open-brace, newline. Sangría, ['dollar-sign' | 'Object-marker'] foo es igual a 0, punto y coma, newline, newline. Public function bar open- cerrar paréntesis, abrir llaves, nueva línea Sangría, regresar ['dólar-signo' | 'Objeto-marcador'] esta flecha foo, punto y coma, nueva línea. Invertir sangría, cerrar llaves, nueva línea, sangría inversa, cierre de llaves , newline, newline. ['dollar-sign' | 'Object-marker'] myobject igual a new MyClass abrir-cerrar paréntesis, punto y coma, nueva línea. ['dollar-sign' | 'Object-marker'] myobject flecha barra abrir-cerrar paréntesis, punto y coma, nueva línea. Invertir sangría, PHP cerrar etiqueta.

Donde ves ['dollar-sign' | 'Object-marker'], simplemente elija lo que suela 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.


-> es el operador de propiedad utilizado para PHP en el modo orientado a objeción.


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

Por ejemplo:

x->value = y->value

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


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

Dado que muchos idiomas usan "punto" como en Foo.bar(); Yo quería una palabra de una sílaba para usar. ¡"Arrow" es demasiado largo! ;)

Desde PHP usa . "punto" para 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 parecida a "punto" para fluir cómodamente, pero lo suficientemente distinta (al menos cuando lo decimos) para no ser confundida con un "punto" concatenado .


$a->b 

Llamo como "param b de $ a".

$a->b()

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


Objeto. Entonces $a->$b->$c sería 'Un objeto B objeto c'.


user187291 ha respondido la pregunta no subjetiva, en cuanto a la subjetiva, digo "sub". Por ejemplo, pronuncio $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". Normalmente, al leer 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 todavía no se ha convertido en un problema. Creo que la causa es que veo estructuras / objetos y matrices como "colecciones", y los elementos de los mismos están suscritos como en notación matemática.


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 por Lorna Mitchell) se llama el operador de objetos .


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

p.ej:

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

leería como tal:

echo (/ print) la propiedad bar del objeto foo.

Es prolijo y lleva más tiempo, pero me parece que si hay una razón para que exprese mi código verbalmente, entonces probablemente tenga que ser claro en cuanto a lo que estoy comunicando exactamente.


Al leer el código PHP en voz alta, no pronuncio el operador "->". Para $db->prepare($query); Casi siempre digo "Db [pausa corta] prepara la consulta". Así que supongo que lo hablo como una coma en una oración regular.

Lo mismo vale para el Paamayim Nekudotayim ("::").


En realidad, mediante este símbolo podemos llamar a un método de clase que es estático y no depende de otra inicialización ...

class Test {

    public $name;

    public function __construct() {
        $this->name = 'Mrinmoy Ghoshal';
    }

    public static function doWrite($name) {
        print 'Hello '.$name;
    }

    public function write() {
        print $this->name;
    }
}

Aquí la función doWrite () no depende de ningún otro método o variable, y es un método estático. Es por eso que podemos llamar a este método por este operador sin inicializar el objeto de esta clase.

Test::doWrite('Mrinmoy'); // Output: Hello Mrinmoy.

Pero si desea llamar al método de write de esta manera, generará un error porque depende de la inicialización.





php operators