Apa yang disebut "->" oleh operator PHP dan bagaimana Anda mengatakannya ketika membaca kode dengan keras? [Tutup]

127

Apa yang Anda sebut ->operator cari panah ini ditemukan di PHP?

Entah itu tanda minus, tanda hubung atau tanda hubung diikuti oleh tanda lebih besar dari (atau chevron kanan).

Bagaimana Anda mengucapkannya ketika membaca kode dengan keras?

Jake
sumber
12
Mengapa pertanyaan ini ditutup sebagai duplikat dari pertanyaan yang menghubungkan ke pertanyaan ini untuk menjawabnya?
Ben
1
Dalam C ++ operator "->" disebut "anggota pointer" tetapi operator PHP "->" sebenarnya lebih dekat dengan "." operator di C ++ dan itu disebut "anggota objek".
user34660

Jawaban:

134

Nama resmi adalah "operator objek" - T_OBJECT_OPERATOR . Saya menyebutnya "panah".

pengguna187291
sumber
9
Perhatikan bahwa token leksikal tidak selalu seperti apa token itu biasa disebut. Misalnya, nama :: adalah "operator resolusi lingkup" tetapi tercantum dalam artikel itu sebagai T_DOUBLE_COLON. Saya akan memberi +1 kepada Anda ketika saya mendapatkan lebih banyak suara :)
Billy ONeal
1
Nah, kedengarannya aneh jika Anda membaca "Dan setelah B mengeksekusi dan mengembalikan gaji, A panah C". Ini akan lebih seperti A mengacu pada C.
Ben
66
Billy benar, sebagian besar orang menyebut :: a T_PAAMAYIM_NEKUDOTAYIM dalam percakapan santai
Alan Storm
3
Saya akan mengatakan itu seperti $a->do()"Metode A Lakukan" dan $a->thing"Hal Properti A", jadi itu relatif.
Martin Lyne
1
Btw, T_PAAMAYIM_NEKUDOTAYIMtepatnya berarti "usus besar ganda" dalam bahasa Ibrani.
Neta
59

Saya menyebutnya " anak panah "; seperti di $Foo->bar(): "Foo dart bar"

Karena banyak bahasa menggunakan "titik" seperti pada Foo.bar();saya ingin menggunakan kata satu suku kata. "Panah" terlalu bertele-tele! ;)

Karena PHP menggunakan ."dot" untuk concatenation (mengapa?) Saya tidak bisa mengatakan "dot" dengan aman - ini bisa membingungkan.

Membahas dengan rekan kerja beberapa waktu lalu, kami memutuskan "panah" sebagai kata yang cukup mirip dengan "titik" untuk mengalir dengan nyaman, tetapi cukup berbeda (setidaknya ketika kita mengatakannya) untuk tidak keliru dengan "titik" gabungan. .

Payung
sumber
1
Aku suka itu! +1 untuk Anda. Saya kira ada beberapa bahaya menusuk "panah" menjadi "titik" ketika berbicara dengan keras. Sayang sekali "panah" mungkin jauh lebih mengakar.
Phil Perry
Bagus, ini jawaban yang kemungkinan besar akan saya gunakan di kepala saya. Pembenaran yang bagus atas jawaban Anda.
Liam
Saya akan mengingat ini pasti.
Chev
Saya mengerti jika Anda mengatakan panah ... Saya benar-benar tersesat jika Anda menyebutkan panah
Emeka Mbah
39

Saat membaca kode PHP dengan keras, saya tidak mengucapkan operator "->". Karena $db->prepare($query);saya kebanyakan mengatakan "Db [jeda pendek] siapkan permintaan." Jadi saya kira saya berbicara seperti koma dalam kalimat reguler.

Hal yang sama berlaku untuk Paamayim Nekudotayim ("::").

selfawaresoup
sumber
10
Whata Paamayah? jk
ValleyDigital
1
Atau dikenal sebagai Operator Penyelesaian Ruang Lingkup
CommandZ
1
Saya suka menyebut Paamayim Nekudotayim ("::") "CoCo" sebagai kependekan dari "colon colon"
Umbrella
14

Ketika membaca kode untuk saya sendiri, saya menganggapnya seperti "hal yang posesif".

Sebagai contoh:

x->value = y->value

akan membaca "nilai x sama dengan nilai y"

Dan Mantyla
sumber
9

Paling sering, saya menggunakan beberapa variasi pada metode @Tor Valamo ("metode B dari A" atau "metode B's"), tetapi kadang-kadang saya mengatakan "titik". Misalnya "panggil A dot B ()".

Sprugman
sumber
5
Saya selalu mengatakan "a dot b" ​​karena begitulah dalam hampir setiap bahasa lainnya. PHP dan pengembang non-PHP sepertinya selalu mengerti saya.
Gareth
1
Ya, saya jatuh kembali ke "titik" karena mencapai hal yang sama dengan operator titik di sebagian besar bahasa lain. Pertanyaannya kemudian, apa yang Anda panggil ->dalam C / C ++ di mana ia memiliki fungsi yang berbeda dari operator titik yang sebenarnya?
meagar
4

Operator properti.

Saat membaca $a->b()atau $a->bbersuara keras saya hanya mengatakan "panggil b pada $ a obj" atau "dapatkan b dari / in / dari $ a"

Tor Valamo
sumber
1
@Tor, saya kira, "Metode operator" juga.
Marcus Adams
@Marcus Adams - Tidak juga, mengingat metode hanyalah properti yang kebetulan berfungsi di sebagian besar bahasa. Di PHP saja, ada perbedaan besar, tapi saya masih menyebutnya properti.
Tor Valamo
4

Saya pribadi suka menjadi verbose dalam mengekspresikan kode saya secara verbal.

misalnya:

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

akan membaca seperti itu:

echo (/ print) properti bar dari objek foo.

Ini verbal dan lebih memakan waktu, tetapi saya menemukan jika ada alasan bagi saya untuk mengekspresikan kode saya secara verbal, maka saya mungkin perlu jelas tentang apa yang saya komunikasikan dengan tepat.

Mendambakan
sumber
Saya khawatir Anda kehilangan saya, Tomasz. :/ Maksud kamu apa?
Craige
4

Harkening kembali ke Cobol 'di' di mana Anda akan berkata "Pindahkan 5 ke b di." Sebagian besar bahasa sekarang memenuhi syarat ke arah lain.

Namun saya masih akan membaca $a->b();"Call b in a".

Mengenakan
sumber
4
$a->b 

Saya menyebutnya sebagai "param b dari $ a".

$a->b()

Saya menyebutnya sebagai "fungsi b dari $ a".

Ganu
sumber
3

Panah tunggal dapat dengan mudah disebut secara verbal sebagai artinya untuk PHP OOP: Anggota. Sehingga untuk$a->var Anda akan mengatakan "Object a's member var".

Saat membaca kode dengan keras, itu membantu untuk membaca ke depan (lihat referensi di muka, maaf), dan tahu apa yang sebenarnya Anda maksud. Sebagai contoh, mari kita ambil sedikit kode berikut:

<?php
  Class MyClass {
    $foo = 0;

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

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

Jadi, jika saya membaca dengan keras blok kode ini sebagai demonstrasi kode, saya akan mengatakan ini:

"Tentukan Kelas 'MyClass', buka-brace. Variabel 'foo' sama dengan nol, putus garis. Tetapkan fungsi publik 'bar' tanda kurung buka-tutup, buka-kurung. Kembalikan variabel anggota 'foo' objek 'ini', terminasi baris Close-brace, close-brace. Instantiate instance baru dari 'MyClass' (tanpa argumen) sebagai objek variabel 'myobject', mengakhiri baris. Panggil metode anggota 'bar' objek 'myobject', terminate line. "

Namun, jika saya membaca kode dengan keras untuk siswa lain atau programer untuk menyalin tanpa visual, maka saya akan mengatakan:

"Tag terbuka PHP (penuh), baris baru, lekukan, Kelas-terbuka brace MyClass, baris baru. Lekukan, ['tanda dolar' | 'Objek-penanda'] foo sama dengan 0, titik koma, baris baru, baris baru. Bilah fungsi publik open- tutup kurung, kurung buka, baris baru. Indent, kembalikan ['tanda dolar' | 'Objek-penanda'] panah ini foo, titik koma, baris baru. Balik-inden, kurung kurawal, baris baru, mundur-inden, kurung dekat , baris baru, baris baru. ['tanda-dolar' | 'Objek-penanda'] myobject sama dengan tanda kurung buka-tutup MyClass, titik koma, baris baru. ['tanda-dolar' | 'Objek-penanda'] baris panah myobject panah buka-tutup tanda kurung, titik koma, baris baru. Indentasi balik, tag penutup PHP. "

Di mana Anda melihat ['tanda dolar' | | 'Object-marker'], cukup pilih yang mana Anda cenderung berbicara untuk '$', saya sering beralih di antara keduanya, hanya tergantung pada audiens saya.

Jadi, untuk meringkasnya, dalam PHP, -> mengacu pada anggota suatu objek, baik itu variabel, objek lain, atau metode.

pengguna253780
sumber
1

Pengembang PHP senior tempat saya bekerja mengatakan "panah".

$A->B;

Ketika dia mengatakan kepada saya untuk mengetik di atas, dia akan berkata, "Dolar A panah B" atau untuk

$A->B();

"Dolar A panah B parens."

Marcus Adams
sumber
1

Saya akan melakukannya seperti ini:

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

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

Dalam buku saya ( PHP Master oleh Lorna Mitchell) itu disebut operator objek .

Julian
sumber
1

Jepang memiliki partikel yang nyaman untuk ini, "tidak" (の). Ini adalah partikel posesif, yang secara kasar berarti "berkaitan dengan istilah sebelumnya".

"Fred の badger" berarti "badger Fred".

Yang jauh dari mengatakan bahwa setidaknya secara mental, dan juga di antara mereka yang mengerti bahasa Jepang, saya cenderung membedakan mereka dengan membacanya sebagai:

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

Tetapi membaca keduanya sebagai posesif "bekerja" juga, untuk penutur non-Jepang. Anda juga dapat membalik mereka dan menggunakan "dari", jadi "D of C" ... tapi itu agak canggung, dan sulit untuk melakukannya Anda membaca dengan cepat karena itu merusak aliran linear Anda.

Namun, jika saya mendikte, mungkin ketika memasangkan kode dan menyarankan apa yang harus diketik, saya akan merujuk ke karakter tertentu sebagai "tanda panah lebih besar dari panah" dan "tanda titik dua" (jika saya tahu orang yang saya bicarakan to adalah PHPophile, saya bisa menyebutnya "paamayim nekudotayim double-colon" pertama kali, sebagian karena ini adalah lelucon keren, sebagian untuk mencegah mereka dari "mengoreksi" saya).

Dewi Morgan
sumber
0

Obyek. Jadi $a->$b->$cakan menjadi 'A objek B objek c'.

Mbrevda
sumber
0

-> adalah operator properti yang digunakan untuk PHP dalam mode berorientasi objek.

Jordan Hudgens
sumber
0

user187291 telah menjawab pertanyaan non-subyektif, seperti untuk pertanyaan subyektif, saya mengatakan "sub". Sebagai contoh, saya akan mengucapkan $x->y"x sub y" - "sub" dalam konteks ini adalah kependekan dari "subscript". Ini lebih tepat untuk notasi array; $x['y']Saya juga mengucapkan "x sub y". Biasanya ketika membaca kode dengan keras, saya menggunakan kata-kata saya untuk mengidentifikasi garis yang bisa dilihat pengembang lain, sehingga ambiguitasnya belum menjadi masalah. Saya percaya penyebabnya adalah bahwa saya melihat struct / objek dan array sebagai "koleksi", dan elemen-elemennya dituliskan dalam notasi matematika.

Iiridayn
sumber