Toán tử PHP -> PHP được gọi là gì và bạn nói như thế nào khi đọc mã lớn? [đóng cửa]


127

Bạn gọi ->toán tử tìm kiếm mũi tên này được tìm thấy trong PHP là gì?

Đó là dấu trừ, dấu gạch ngang hoặc dấu gạch nối theo sau là dấu lớn hơn dấu (hoặc chevron phải).

Làm thế nào để bạn phát âm nó khi đọc mã lớn?


12
Tại sao câu hỏi này được đóng lại như một bản sao của câu hỏi liên kết đến câu hỏi này để trả lời nó?
Ben

1
Trong C ++, toán tử "->" được gọi là "thành viên của con trỏ" nhưng toán tử PHP "->" thực sự gần với "." toán tử trong C ++ và đó được gọi là "thành viên của đối tượng".
dùng34660

Câu trả lời:


134

Tên chính thức là "toán tử đối tượng" - T_OB DỰ_OPERATOR . Tôi gọi nó là "mũi tên".


9
Lưu ý rằng mã thông báo từ vựng không phải lúc nào cũng là mã thông báo thường được đề cập. Ví dụ: tên của :: là "toán tử phân giải phạm vi" nhưng được liệt kê trong bài viết đó dưới dạng T_DOUBLE_COLON. Tôi sẽ +1 cho bạn khi tôi nhận được thêm một số phiếu bầu :)
Billy ONeal

1
Chà, nghe có vẻ lạ nếu bạn đọc "Và sau khi B thực thi và trả lại tiền lương, A mũi tên C". Nó sẽ giống như A đề cập đến C.
Ben

66
Quyền của Billy, hầu hết mọi người gọi :: a T_PAAMAYIM_NEKUDOTAYIM trong cuộc trò chuyện ngẫu nhiên
Alan Storm

3
Tôi muốn nói nó giống như $a->do()"Phương pháp của A" và $a->thinglà "Điều tài sản của A", vì vậy nó tương đối.
Martin Lyne

1
Btw, T_PAAMAYIM_NEKUDOTAYIMchính xác có nghĩa là "dấu hai chấm" trong tiếng Do Thái.
Neta

59

Tôi gọi nó là " phi tiêu "; như trong $Foo->bar(): "Foo phi tiêu thanh"

Vì nhiều ngôn ngữ sử dụng "dấu chấm" như trong Foo.bar();tôi muốn sử dụng một từ có một âm tiết. "Mũi tên" chỉ là quá dài! ;)

Vì PHP sử dụng ."dấu chấm" để ghép nối (tại sao?) Tôi không thể nói "dấu chấm" một cách an toàn - nó có thể gây nhầm lẫn.

Thảo luận với đồng nghiệp một thời gian trước, chúng tôi quyết định "phi tiêu" là một từ tương tự đủ để "chấm" để chảy thoải mái, nhưng đủ khác biệt (ít nhất là khi chúng ta nói) để không bị nhầm lẫn với một "dấu chấm" nối liền .


1
Tôi thích điều đó! +1 cho bạn. Tôi cho rằng có một số nguy cơ của việc "phóng phi tiêu" thành "chấm" khi nói to. "Mũi tên" quá tệ có lẽ cố thủ hơn nhiều.
Phil Perry

Thật tuyệt, đây là câu trả lời tôi sẽ sử dụng nhiều nhất trong đầu. Tốt biện minh cho câu trả lời của bạn.
Liam

Tôi sẽ nhớ điều này cho chắc chắn.
Chev

Tôi hiểu nếu bạn nói mũi tên ... Tôi hoàn toàn lạc
lối

39

Khi đọc to mã PHP, tôi không phát âm toán tử "->". Vì $db->prepare($query);tôi chủ yếu nói "Db [tạm dừng ngắn] chuẩn bị truy vấn." Vì vậy, tôi đoán tôi nói nó như một dấu phẩy trong một câu thông thường.

Điều tương tự cũng xảy ra với Paamayim Nekudotayim ("::").


10
Paamayah whata? jk
ValleyDigital 17/12/13

1
Còn được gọi là Toán tử phân giải phạm vi
CommandZ

1
Tôi thích gọi Paamayim Nekudotayim ("::") "CoCo" là viết tắt của "đại tràng ruột kết"
Ô

14

Khi đọc mã cho chính mình, tôi nghĩ về nó giống như một "thứ sở hữu".

Ví dụ:

x->value = y->value

sẽ đọc "giá trị của x bằng giá trị của y"


9

Thông thường, tôi sử dụng một số biến thể trên phương thức của @Tor Valamo ("phương pháp B của A" hoặc "Phương pháp B của A"), nhưng đôi khi tôi nói "dấu chấm". Ví dụ: "gọi A chấm B ()".


5
Tôi luôn nói "một dấu chấm b" bởi vì đó là ngôn ngữ khác. Các nhà phát triển PHP và không phải PHP dường như luôn hiểu tôi.
Gareth

1
Phải, tôi quay lại "chấm" vì nó hoàn thành điều tương tự như toán tử dấu chấm trong hầu hết các ngôn ngữ khác. Sau đó, câu hỏi trở thành, bạn gọi gì ->trong C / C ++, nơi nó có chức năng khác với toán tử chấm thực tế?
meagar

4

Nhà điều hành tài sản.

Khi đọc $a->b()hoặc $a->bnói to tôi chỉ cần nói "gọi b trên $ a obj" hoặc "get b from / in / of $ a"


1
@Tor, tôi đoán, "Toán tử phương thức" cũng có.
Marcus Adams

@Marcus Adams - Không thực sự, xem như các phương thức chỉ là các thuộc tính xảy ra là các hàm trong hầu hết các ngôn ngữ. Mặc dù trong PHP, có một sự khác biệt lớn, nhưng tôi vẫn gọi nó là một tài sản.
Tor Valamo

4

Cá nhân tôi thích được tiết lộ bằng cách diễn đạt mã của mình bằng lời nói.

ví dụ:

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

sẽ đọc như vậy:

echo (/ print) thuộc tính thanh của đối tượng foo.

Nó dài dòng và tốn nhiều thời gian hơn, nhưng tôi thấy nếu có lý do để tôi thể hiện mã của mình bằng lời nói thì có lẽ tôi cần phải rõ ràng về những gì tôi đang truyền đạt chính xác.


Tôi sợ bạn đã mất tôi, Tomasz. :/ Ý anh là gì?
Craige

4

Quay trở lại Cobol 'in' nơi bạn sẽ nói "Di chuyển 5 đến b trong a." Hầu hết các ngôn ngữ ngày nay đủ điều kiện theo hướng khác.

Tuy nhiên, tôi vẫn sẽ đọc $a->b();là "Gọi b trong một".


4
$a->b 

Tôi gọi là "param b của $ a".

$a->b()

Tôi gọi là "hàm b của $ a".


3

Mũi tên đơn có thể dễ dàng được gọi bằng lời như ý nghĩa của PHP OOP: Member. Vì vậy, đối với $a->varbạn sẽ nói "Đối tượng var thành viên".

Khi đọc to mã, nó sẽ giúp đọc trước (tham khảo, xin lỗi) và biết những gì bạn thực sự có thể được đề cập đến. Chẳng hạn, hãy có một đoạn mã sau:

<?php
  Class MyClass {
    $foo = 0;

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

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

Vì vậy, nếu tôi đọc to khối mã này như một minh chứng về mã, tôi sẽ nói điều này:

"Xác định lớp 'MyClass', dấu ngoặc mở. Biến 'foo' bằng 0, chấm dứt dòng. Xác định hàm công khai 'thanh' dấu ngoặc đóng mở, dấu ngoặc mở. Trả về biến thành viên 'foo' của đối tượng 'này', chấm dứt dòng Nẹp gần, nẹp sát. Khởi tạo thể hiện mới của 'MyClass' (không có đối số) làm đối tượng biến 'myobject', chấm dứt dòng. Gọi phương thức thành viên 'bar' của đối tượng 'myobject', chấm dứt dòng. "

Tuy nhiên, nếu tôi đang đọc to mã cho các sinh viên hoặc lập trình viên khác sao chép mà không có hình ảnh, thì tôi sẽ nói:

"Thẻ mở PHP (đầy đủ), dòng mới, thụt lề, Class MyClass open-brace, newline. Indent, ['Dollar-sign' | 'Object-Marker'] foo bằng 0, dấu chấm phẩy, dòng mới, dòng mới. dấu ngoặc đơn đóng, dấu ngoặc kép, dòng mới. Ấn định, trả về ['ký hiệu đô la' | 'Dấu hiệu đối tượng'] mũi tên này foo, dấu chấm phẩy, dòng mới. Đảo ngược, đóng dấu ngoặc kép, dòng mới, thụt lùi, đóng dấu , dòng mới, dòng mới. ['đô la ký' | 'Dấu hiệu đối tượng'] myobject bằng dấu ngoặc đơn đóng mở MyClass mới, dấu chấm phẩy, dòng mới. ['đô la ký' | 'Dấu đối tượng'] thanh mũi tên myobject đóng dấu ngoặc đơn, dấu chấm phẩy, dòng mới. Đảo ngược thụt lề, thẻ đóng PHP. "

Nơi bạn thấy ['ký hiệu đô la' | Marker Đánh dấu đối tượng '], chỉ cần chọn bất cứ điều gì bạn có xu hướng nói với' $ ', tôi chuyển đổi giữa hai người thường xuyên, chỉ phụ thuộc vào đối tượng của tôi.

Vì vậy, để tóm tắt, trong PHP, -> đề cập đến một thành viên của một đối tượng, có thể là một biến, một đối tượng khác hoặc một phương thức.


1

Nhà phát triển PHP cao cấp nơi tôi làm việc nói "mũi tên".

$A->B;

Khi anh ấy bảo tôi gõ như trên, anh ấy sẽ nói, "Dollar A mũi tên B" hoặc cho

$A->B();

"Dollar A mũi tên B parens."


1

Tôi sẽ làm như thế này:

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

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

Trong cuốn sách của tôi ( PHP Master của Lorna Mitchell), nó được gọi là toán tử đối tượng .


1

Tiếng Nhật có một hạt thuận tiện cho việc này, "không" (の). Nó là hạt sở hữu, có nghĩa đại khái là "liên quan đến thuật ngữ trước".

"Fred の badger" có nghĩa là "Fred's lửng".

Đó là một chặng đường dài để nói rằng ít nhất là về mặt tinh thần, và trong số những người hiểu tiếng Nhật, tôi có xu hướng phân biệt chúng bằng cách đọc chúng là:

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

Nhưng đọc cả hai như một "s" sở hữu cũng hoạt động, đối với người không nói tiếng Nhật. Bạn cũng có thể lật chúng và sử dụng "of", vì vậy "D of C" ... nhưng điều đó hơi khó xử và khó thực hiện khi bạn đọc nhanh vì nó phá vỡ dòng chảy tuyến tính của bạn.

Tuy nhiên, nếu tôi đang đọc chính tả, có lẽ khi ghép mã hóa và gợi ý nên gõ gì, tôi sẽ gọi các ký tự cụ thể là "dấu gạch ngang lớn hơn mũi tên" và "dấu hai chấm" (nếu tôi biết người tôi đang nói là một PHPophile, lần đầu tiên tôi có thể gọi đó là "dấu hai chấm paamayim nekudotayim", một phần vì nó là một trò đùa thú vị, một phần để ngăn họ "sửa" tôi).


0

Vật. Vậy $a->$b->$csẽ là 'Một đối tượng B đối tượng c'.


0

-> là toán tử thuộc tính được sử dụng cho PHP trong chế độ hướng đối tượng.


0

user187291 đã trả lời câu hỏi không chủ quan, như đối với câu hỏi chủ quan, tôi nói "phụ". Ví dụ: tôi sẽ phát âm $x->ylà "x sub y" - "sub" trong ngữ cảnh này là viết tắt của "subscript". Điều này là thích hợp hơn cho ký hiệu mảng; $x['y']Tôi cũng phát âm "x sub y". Thông thường khi đọc mã thành tiếng, tôi đang sử dụng các từ của mình để xác định một dòng mà nhà phát triển khác có thể nhìn thấy, vì vậy sự mơ hồ vẫn chưa trở thành vấn đề. Tôi tin rằng nguyên nhân là tôi xem các cấu trúc / đối tượng và mảng là "các bộ sưu tập" và các phần tử của chúng được ký hiệu như trong ký hiệu toán học.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.