Jak nazywa się operator PHP „->” i jak to wypowiadasz, czytając kod na głos? [Zamknięte]

127

Jak nazywasz ten ->operator wyglądający jak strzałka , znaleziony w PHP?

Jest to znak minus, myślnik lub łącznik, po którym następuje znak większości (lub prawy szewron).

Jak to wymawiasz, czytając kod na głos?

Jake
źródło
12
Dlaczego to pytanie zostało zamknięte jako duplikat pytania, które zawiera link do tego pytania, aby na nie odpowiedzieć?
Ben
1
W C ++ operator "->" nazywany jest "członkiem wskaźnika", ale operator PHP "->" jest w rzeczywistości bliżej "." operator w C ++ i nazywany jest „członkiem obiektu”.
user34660

Odpowiedzi:

134

Oficjalna nazwa to „operator obiektu” - T_OBJECT_OPERATOR . Nazywam to „strzałą”.

user187291
źródło
9
Zwróć uwagę, że token leksykalny nie zawsze jest tym, do czego zwykle się odnosi. Na przykład nazwa :: jest „operatorem rozpoznawania zakresu”, ale jest wymieniona w tym artykule jako T_DOUBLE_COLON. Dam Ci +1, gdy zdobędę więcej głosów :)
Billy ONeal
1
Cóż, brzmi dziwnie, jeśli przeczytasz „A po tym, jak B wykonuje i zwraca pensję, strzałka A C”. Będzie bardziej tak, jak A odnosi się do C.
Ben
66
Billy ma rację, większość ludzi dzwoni do: a T_PAAMAYIM_NEKUDOTAYIM w swobodnej rozmowie
Alan Storm
3
Powiedziałbym, że $a->do()jest to „metoda A do” i $a->thing„rzecz właściwości A”, więc jest względna.
Martin Lyne,
1
Przy okazji, T_PAAMAYIM_NEKUDOTAYIMdokładnie oznacza „podwójny dwukropek” po hebrajsku.
Neta
59

Nazywam to " strzałką ”; jak w $Foo->bar(): „Foo dart bar”

Ponieważ wiele języków używa „kropki”, tak jak w przypadku Foo.bar();, chciałem użyć słowa jednosylabowego. „Strzałka” jest po prostu zbyt rozwlekła! ;)

Ponieważ PHP używa . „kropki” do konkatenacji (dlaczego?), Nie mogę bezpiecznie powiedzieć „kropki” - może to być mylące.

Dyskutując ze współpracownikiem jakiś czas temu, zdecydowaliśmy się na „strzałkę” jako słowo na tyle podobne do „kropki”, aby płynąć komfortowo, ale wystarczająco wyraźne (przynajmniej jeśli to powiemy), aby nie było mylone z łączącą „kropką” .

Parasol
źródło
1
Lubię to! +1 dla Ciebie. Przypuszczam, że podczas głośnego mówienia istnieje niebezpieczeństwo, że „strzałka” zamieni się w „kropkę”. Szkoda, że ​​„strzała” jest prawdopodobnie znacznie bardziej zakorzeniona.
Phil Perry,
Fajnie, to jest odpowiedź, której najprawdopodobniej użyję w mojej głowie. Dobre uzasadnienie Twojej odpowiedzi.
Liam
Na pewno to zapamiętam.
Chev
Rozumiem, jeśli powiesz strzałkę ... Całkowicie się zgubię, jeśli wspomnisz o dart
Emeka Mbah
39

Czytając na głos kod PHP, nie wymawiam operatora „->”. Na $db->prepare($query);I przede wszystkim powiedzieć „Db [krótka pauza] przygotować zapytania”. Więc myślę, że mówię to jak przecinek w zwykłym zdaniu.

To samo dotyczy Paamayim Nekudotayim („::”).

samoświadomość
źródło
10
Paamayah whata? jk
ValleyDigital,
1
Inaczej znany jako operator
rozpoznawania
1
Lubię nazywać Paamayim Nekudotayim („::”) „CoCo” jako skrót od „okrężnica”
Umbrella
14

Czytając sobie kod, myślę o nim jak o „zaborczej rzeczy”.

Na przykład:

x->value = y->value

przeczytałoby „wartość x równa się wartości y”

Dan Mantyla
źródło
9

Najczęściej używam wariacji na temat metody @Tor Valamo („metoda B z A” lub „metoda A's B”), ale czasami mówię „kropka”. Np. „Wywołaj A kropkę B ()”.

sprugman
źródło
5
Zawsze mówię „a kropka b”, ponieważ tak jest w prawie każdym innym języku. Programiści PHP i nie-PHP zawsze wydają się mnie rozumieć.
Gareth,
1
Tak, wracam do „kropki”, ponieważ robi to samo, co operator kropki w większości innych języków. Powstaje zatem pytanie, co wywołujesz ->w C / C ++, gdzie ma inną funkcjonalność niż rzeczywisty operator kropki?
meagar
4

Operator nieruchomości.

Podczas czytania $a->b()lub $a->bgłośno mówię po prostu „wezwij b na $ a obj” lub „pobierz b z / w / z $ a”

Tor Valamo
źródło
1
@Tor, chyba również "operator metody".
Marcus Adams
@Marcus Adams - Niezupełnie, biorąc pod uwagę, że metody to tylko właściwości, które są funkcjami w większości języków. Jednak w samym PHP istnieje duże rozróżnienie, ale nadal nazwałbym to właściwością.
Tor Valamo,
4

Osobiście lubię być rozwlekły w wyrażaniu swojego kodu werbalnie.

na przykład:

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

brzmiałoby tak:

echo (/ print) właściwość bar obiektu foo.

Jest to rozwlekłe i bardziej czasochłonne, ale stwierdzam, że jeśli jest powód, dla którego chcę wyrazić swój kod werbalnie, prawdopodobnie muszę mieć jasność co do tego, co dokładnie przekazuję.

Craige
źródło
Obawiam się, że mnie straciłeś, Tomasz. :/ Co masz na myśli?
Craige
4

Słysząc z powrotem do Cobola „in”, gdzie powiedziałbyś „Move 5 to b in a”. Większość dzisiejszych języków określa rzeczy w innym kierunku.

Jednak nadal czytałbym $a->b();jako „Zadzwoń do b in a”.

Don
źródło
4
$a->b 

Wzywam jako „param b z $ a”.

$a->b()

Wołam jako „funkcja b $ a”.

ganu
źródło
3

Pojedyncza strzałka może być łatwo określona werbalnie jako oznaczenie dla PHP OOP: Member. Więc dla$a->var powiedziałbyś "zmienna składowa obiektu a".

Czytając kod na głos, dobrze jest czytać z wyprzedzeniem (patrz wstecz, przepraszam) i wiedzieć, do czego właściwie odnosisz się. Na przykład, przygotujmy następujący fragment kodu:

<?php
  Class MyClass {
    $foo = 0;

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

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

Tak więc, gdybym miał przeczytać na głos ten blok kodu jako demonstrację kodu, powiedziałbym tak:

„Zdefiniuj klasę„ MyClass ”, otwarty nawias klamrowy. Zmienna„ foo ”równa się zero, zakończ linię. Zdefiniuj funkcję publiczną„ bar ”nawiasy otwierające i zamykające, nawiasy otwierające. Zwróć zmienną składową„ foo ”obiektu„ this ”, zakończ linię . Nawias zamykający, nawias zamykający. Utwórz instancję nowej instancji „MyClass” (bez argumentów) jako obiekt zmienny „myobject”, zakończ linię. Wywołaj metodę składową „bar” obiektu „myobject”, zakończ linię. "

Gdybym jednak czytał kod na głos, aby inni studenci lub programiści mogli go skopiować bez wizualizacji, powiedziałbym:

"Otwierający znacznik PHP (pełny), znak nowej linii, wcięcie, klasa otwartego nawiasu klamrowego MyClass, znak nowej linii. Wcięcie, ['znak dolara' | 'znacznik obiektu'] foo równa się 0, średnik, nowa linia, nowa linia. Public function bar open- nawiasy zamykające, nawias zamykający, znak nowej linii. Wcięcie, powrót ['znak dolara' | 'znacznik obiektu'] ta strzałka foo, średnik, nowa linia. Wcięcie odwrotne, nawias zamykający, nowa linia, wcięcie odwrotne, nawias zamykający , nowa linia, nowa linia. ['znak dolara' | 'znacznik obiektu'] mojobject równa się nowy MyClass otwierający-zamykający nawiasy, średnik, nowy wiersz. ['znak dolara' | 'znacznik obiektu'] pasek strzałki mojego obiektu otwórz-zamknij nawiasy, średnik, znak nowej linii. Odwróć wcięcie, znacznik zamykający PHP. "

Gdzie widzisz ['znak dolara' | „Object-marker”], po prostu wybierz to, co zwykle mówisz za „$”. Często przełączam się między nimi, w zależności od moich odbiorców.

Podsumowując, w PHP -> odnosi się do elementu członkowskiego obiektu, czy to zmiennej, innego obiektu czy metody.

user253780
źródło
1

Starszy programista PHP, w którym pracuję, mówi „strzałka”.

$A->B;

Kiedy każe mi wpisać powyższe, powie: „Dolar A, strzałka B” lub za

$A->B();

„Parens dolara A, strzałka B”.

Marcus Adams
źródło
1

Zrobiłbym to tak:

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

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

W mojej książce ( PHP Master autorstwa Lorny Mitchell) nazywa się to operatorem obiektu .

juliański
źródło
1

Japoński ma do tego dogodną cząsteczkę „nie” (の). Jest to cząstka dzierżawcza, oznaczająca z grubsza „odnoszącą się do poprzedniego terminu”.

„Fred の borsuk” oznacza „borsuk Freda”.

To długa droga do stwierdzenia, że ​​przynajmniej mentalnie, a także wśród tych, którzy rozumieją japoński, mam tendencję do rozróżniania ich, czytając je jako:

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

Ale czytanie obu jako zaborczych „s” działa również dla osób nie mówiących po japońsku. Możesz je również odwrócić i użyć "of", więc "D of C" ... ale to trochę niezręczne i trudne do zrobienia, czytasz szybko, ponieważ przerywa twój liniowy przepływ.

Gdybym jednak dyktował, być może podczas kodowania parami i sugerowania, co wpisać, określiłbym konkretne znaki jako „myślnik większy niż strzałka” i „dwukropek” (jeśli znam osobę, z którą rozmawiam to jest PHPofilem, za pierwszym razem mógłbym nazwać to „paamayim nekudotayim podwójnym dwukropkiem”, częściowo dlatego, że jest to fajny żart, częściowo po to, aby uniemożliwić im „poprawianie” mnie).

Dewi Morgan
źródło
0

Obiekt. Więc $a->$b->$cbyłoby „A przedmiotem B obiekt c”.

Mbrevda
źródło
0

-> jest operatorem właściwości używanym w PHP w trybie zorientowanym obiektowo.

Jordan Hudgens
źródło
0

user187291 odpowiedział na pytanie nie-subiektywne, a subiektywne, mówię „sub”. Na przykład wymówiłbym $x->yjako „x sub y” - „sub” w tym kontekście jest skrótem od „indeksu dolnego”. Jest to bardziej odpowiednie dla notacji tablicowej; $x['y']Wymawiam również „x sub y”. Zazwyczaj podczas głośnego czytania kodu używam słów, aby zidentyfikować linię, którą inny programista może zobaczyć, więc niejednoznaczność nie stała się jeszcze problemem. Uważam, że przyczyną jest to, że postrzegam struktury / obiekty i tablice jako „kolekcje”, a ich elementy są indeksowane, tak jak w notacji matematycznej.

Iiridayn
źródło