Por que esta pergunta foi encerrada como duplicata de uma pergunta que se vincula a essa pergunta para respondê-la?
Ben
1
Em C ++, o operador "->" é chamado "membro do ponteiro", mas o operador PHP "->" está realmente mais próximo do "." operador em C ++ e que é chamado "membro do objeto".
user34660
Respostas:
134
O nome oficial é "operador de objeto" - T_OBJECT_OPERATOR . Eu chamo de "flecha".
Observe que o token lexical nem sempre é o que geralmente é referido. Por exemplo, o nome de :: é o "operador de resolução de escopo", mas é listado nesse artigo como T_DOUBLE_COLON. Vou +1 para você quando eu chegar mais alguns votos :)
Billy Oneal
1
Bem, soa estranho se você ler "E depois de B executar e devolver o salário, A seta C". Vai ser mais como um refere-se a C.
Ben
66
Direito de Billy, a maioria das pessoas chamar a :: a T_PAAMAYIM_NEKUDOTAYIM em uma conversa casual
Alan Storm
3
Eu diria que $a->do()é o "método A de" e $a->thing"A propriedade da coisa", portanto é relativo.
Martin Lyne
1
Aliás, T_PAAMAYIM_NEKUDOTAYIMexatamente significa "dois pontos duplos" em hebraico.
Neta
59
Eu chamo de " dardo "; como em $Foo->bar(): "Foo dart bar"
Como muitos idiomas usam "ponto", como Foo.bar();eu queria, use uma palavra de uma sílaba. "Arrow" é muito longo! ;)
Como o PHP usa ."ponto" para concatenação (por quê?), Não posso dizer com segurança "ponto" - isso pode confundir.
Discutindo com um colega de trabalho há um tempo, decidimos "dardo" como uma palavra semelhante o suficiente para "pontilhar" para fluir confortavelmente, mas distinta o suficiente (pelo menos quando dizemos) para não ser confundida com um "ponto" concatenador .
Eu gosto disso! +1 para você. Suponho que haja algum perigo de colocar "dardo" em "ponto" quando falar em voz alta. Uma "flecha" muito ruim é provavelmente muito mais entrincheirada.
Phil Perry
Bom, esta é a resposta que provavelmente usarei na minha cabeça. Boa justificativa para sua resposta.
Liam
Vou lembrar disso com certeza.
Chev
Eu entendo se você diz flecha ... eu ser completamente perdido se você mencionar dardo
Emeka Mbah
39
Ao ler o código PHP em voz alta, não pronuncio o operador "->". Pois $db->prepare($query);geralmente digo "Db [pausa curta] prepare a consulta". Acho que falo como uma vírgula em uma frase regular.
Na maioria das vezes, uso alguma variação no método de Tor Valamo ("o método B de A" ou "método B de A"), mas às vezes digo "ponto". Por exemplo, "chame A ponto B ()".
Eu sempre digo "a dot b" porque é assim em praticamente todos os outros idiomas. Devs PHP e não PHP sempre parecem me entender.
63010 Gareth
1
Sim, volto ao "ponto", pois ele realiza a mesma coisa que o operador de ponto na maioria dos outros idiomas. A pergunta então é: como você chama ->C / C ++, onde ele tem uma funcionalidade diferente do operador de ponto real?
meagar
4
Operador de propriedade.
Ao ler $a->b()ou em $a->bvoz alta, basta dizer "chame b no $ a obj" ou "obtenha b de / no / de $ a"
@ Marcus Adams - Na verdade, visto que os métodos são apenas propriedades que, por acaso, são funções na maioria dos idiomas. Apenas no PHP, porém, há uma grande distinção, mas eu ainda chamaria de propriedade.
precisa saber é o seguinte
4
Eu pessoalmente gosto de ser detalhado ao expressar meu código verbalmente.
por exemplo:
$foo =newFoo();
echo $foo->bar
leria assim:
echo (/ print) a propriedade bar do objeto foo.
É detalhado e consome mais tempo, mas acho que, se há uma razão para expressar meu código verbalmente, provavelmente preciso esclarecer exatamente o que estou comunicando.
A seta única pode ser facilmente referida verbalmente como o que significa para o PHP OOP: Member. Então, para $a->varvocê dizer "Obj a var de membro a".
Ao ler o código em voz alta, ajuda ler adiante (referência à vista, desculpe) e saber a que você pode realmente estar se referindo. Por exemplo, vamos ter o seguinte pedaço de código:
Portanto, se eu lesse em voz alta esse bloco de código como uma demonstração de código, eu diria o seguinte:
"Definir classe 'MyClass', chave aberta. A variável 'foo' é igual a zero, encerra a linha. Defina a função pública 'bar' entre parênteses abrir-fechar, chave-aberta. Retorne a variável de membro 'foo' do objeto 'this', finalize a linha Instale uma nova instância de 'MyClass' (sem argumentos) como objeto variável 'myobject', termine a linha. Chame o método do membro 'bar' do objeto 'myobject', termine a linha. "
No entanto, se eu estivesse lendo o código em voz alta para outros estudantes ou programadores copiarem sem visual, eu diria:
"Tag aberta PHP (completa), nova linha, recuo, chave aberta da classe MyClass, nova linha. Recuo, ['sinal de dólar' | 'Marcador de objeto'] foo é igual a 0, ponto-e-vírgula, nova linha, nova linha. Barra de função pública aberta parênteses próximos, parênteses abertos, nova linha. Recuar, retornar ['sinal de dólar' | 'Marcador de objeto'] essa seta foo, ponto e vírgula, nova linha. Recuo reverso, chave curta, nova linha, recuo reverso, chave curta , newline, newline. ['sinal de dólar' | 'Marcador de objeto'] myobject é igual a novos parênteses de abertura e fechamento do MyClass, ponto e vírgula, nova linha. ['sinal de dólar' | 'Marcador de objeto'] barra de seta do myobject abrir-fechar parênteses, ponto e vírgula, nova linha. Recuo reverso, tag estreita do PHP. "
Onde você vê ['cifrão' | 'Object-marker'], basta escolher o que você costuma falar por '$', eu alterno entre os dois com frequência, depende apenas da minha audiência.
Portanto, para resumir, no PHP, -> refere-se a um membro de um objeto, seja uma variável, outro objeto ou um 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();
No meu livro ( PHP Master, de Lorna Mitchell), é chamado de operador de objeto .
O japonês tem uma partícula conveniente para isso, "não" (の). É a partícula possessiva, que significa aproximadamente "relacionada ao termo anterior".
"Fred の texugo" significa "texugo de Fred".
O que é um longo caminho para dizer que, pelo menos mentalmente, e também entre aqueles que entendem japonês, eu tendem a diferenciá-los lendo-os como:
$A->B();// "Call $A's B."
C::D();// "Call C の D."
Mas ler ambos como um "s" possessivo também funciona, para falantes não japoneses. Você também pode girá-los e usar "of", então "D of C" ... mas isso é meio estranho e difícil de fazer, você está lendo rapidamente, porque isso interrompe seu fluxo linear.
Se eu estivesse ditando, talvez, ao codificar em pares e sugerir o que digitar, me referiria aos caracteres específicos como "traço maior que a flecha" e "dois-pontos" (se eu conhecer a pessoa com quem estou falando to é um PHPophile, eu poderia chamar isso de "paamayim nekudotayim dois-pontos-duplos" pela primeira vez, em parte porque é uma piada interessante, em parte para impedir que eles "me corrijam").
user187291 respondeu à pergunta não subjetiva, quanto à subjetiva, digo "sub". Por exemplo, eu pronunciaria $x->ycomo "x sub y" - "sub", neste contexto, é a abreviação de "subscrito". Isso é mais apropriado para notação de matriz; $x['y']Eu também pronunciei "x sub y". Normalmente, ao ler o código em voz alta, estou usando minhas palavras para identificar uma linha que o outro desenvolvedor possa ver, de modo que a ambiguidade ainda não se tornou um problema. Acredito que a causa é que vejo estruturas / objetos e matrizes como "coleções" e seus elementos são subscritos como em notação matemática.
Respostas:
O nome oficial é "operador de objeto" - T_OBJECT_OPERATOR . Eu chamo de "flecha".
fonte
T_DOUBLE_COLON
. Vou +1 para você quando eu chegar mais alguns votos :)$a->do()
é o "método A de" e$a->thing
"A propriedade da coisa", portanto é relativo.T_PAAMAYIM_NEKUDOTAYIM
exatamente significa "dois pontos duplos" em hebraico.Eu chamo de " dardo "; como em
$Foo->bar()
: "Foo dart bar"Como muitos idiomas usam "ponto", como
Foo.bar();
eu queria, use uma palavra de uma sílaba. "Arrow" é muito longo! ;)Como o PHP usa
.
"ponto" para concatenação (por quê?), Não posso dizer com segurança "ponto" - isso pode confundir.Discutindo com um colega de trabalho há um tempo, decidimos "dardo" como uma palavra semelhante o suficiente para "pontilhar" para fluir confortavelmente, mas distinta o suficiente (pelo menos quando dizemos) para não ser confundida com um "ponto" concatenador .
fonte
Ao ler o código PHP em voz alta, não pronuncio o operador "->". Pois
$db->prepare($query);
geralmente digo "Db [pausa curta] prepare a consulta". Acho que falo como uma vírgula em uma frase regular.O mesmo vale para os Paamayim Nekudotayim ("::").
fonte
Ao ler o código para mim, penso nele como uma "coisa possessiva".
Por exemplo:
leria "o valor de x é igual ao valor de y"
fonte
Na maioria das vezes, uso alguma variação no método de Tor Valamo ("o método B de A" ou "método B de A"), mas às vezes digo "ponto". Por exemplo, "chame A ponto B ()".
fonte
->
C / C ++, onde ele tem uma funcionalidade diferente do operador de ponto real?Operador de propriedade.
Ao ler
$a->b()
ou em$a->b
voz alta, basta dizer "chame b no $ a obj" ou "obtenha b de / no / de $ a"fonte
Eu pessoalmente gosto de ser detalhado ao expressar meu código verbalmente.
por exemplo:
leria assim:
É detalhado e consome mais tempo, mas acho que, se há uma razão para expressar meu código verbalmente, provavelmente preciso esclarecer exatamente o que estou comunicando.
fonte
Voltando ao Cobol 'in', onde você diria "Mova 5 para b em a". Hoje, a maioria dos idiomas qualifica as coisas na outra direção.
Ainda assim, eu ainda leria
$a->b();
como "Chamada b em a".fonte
Eu chamo como "param b de $ a".
Eu chamo como "função b de $ a".
fonte
A seta única pode ser facilmente referida verbalmente como o que significa para o PHP OOP: Member. Então, para
$a->var
você dizer "Obj a var de membro a".Ao ler o código em voz alta, ajuda ler adiante (referência à vista, desculpe) e saber a que você pode realmente estar se referindo. Por exemplo, vamos ter o seguinte pedaço de código:
Portanto, se eu lesse em voz alta esse bloco de código como uma demonstração de código, eu diria o seguinte:
No entanto, se eu estivesse lendo o código em voz alta para outros estudantes ou programadores copiarem sem visual, eu diria:
Onde você vê ['cifrão' | 'Object-marker'], basta escolher o que você costuma falar por '$', eu alterno entre os dois com frequência, depende apenas da minha audiência.
Portanto, para resumir, no PHP, -> refere-se a um membro de um objeto, seja uma variável, outro objeto ou um método.
fonte
O desenvolvedor PHP sênior onde trabalho diz "flecha".
Quando ele está me dizendo para digitar o texto acima, ele diz: "Dólar A, seta B" ou por
"Dólar A seta B parens."
fonte
Eu faria assim:
No meu livro ( PHP Master, de Lorna Mitchell), é chamado de operador de objeto .
fonte
O japonês tem uma partícula conveniente para isso, "não" (の). É a partícula possessiva, que significa aproximadamente "relacionada ao termo anterior".
"Fred の texugo" significa "texugo de Fred".
O que é um longo caminho para dizer que, pelo menos mentalmente, e também entre aqueles que entendem japonês, eu tendem a diferenciá-los lendo-os como:
Mas ler ambos como um "s" possessivo também funciona, para falantes não japoneses. Você também pode girá-los e usar "of", então "D of C" ... mas isso é meio estranho e difícil de fazer, você está lendo rapidamente, porque isso interrompe seu fluxo linear.
Se eu estivesse ditando, talvez, ao codificar em pares e sugerir o que digitar, me referiria aos caracteres específicos como "traço maior que a flecha" e "dois-pontos" (se eu conhecer a pessoa com quem estou falando to é um PHPophile, eu poderia chamar isso de "paamayim nekudotayim dois-pontos-duplos" pela primeira vez, em parte porque é uma piada interessante, em parte para impedir que eles "me corrijam").
fonte
Objeto. Então
$a->$b->$c
seria 'Um objeto B objeto c'.fonte
->
é o operador de propriedade usado para PHP no modo orientado a objetos.fonte
user187291 respondeu à pergunta não subjetiva, quanto à subjetiva, digo "sub". Por exemplo, eu pronunciaria
$x->y
como "x sub y" - "sub", neste contexto, é a abreviação de "subscrito". Isso é mais apropriado para notação de matriz;$x['y']
Eu também pronunciei "x sub y". Normalmente, ao ler o código em voz alta, estou usando minhas palavras para identificar uma linha que o outro desenvolvedor possa ver, de modo que a ambiguidade ainda não se tornou um problema. Acredito que a causa é que vejo estruturas / objetos e matrizes como "coleções" e seus elementos são subscritos como em notação matemática.fonte