Как называется оператор PHP «->» и как его произносить при чтении кода вслух? [закрыто]


127

Как вы называете этот стрелочный ->оператор, найденный в PHP?

Это либо знак минуса, тире или дефиса, за которым следует знак «больше» (или правый шеврон).

Как вы произносите его, когда читаете код вслух?


12
Почему этот вопрос был закрыт как дубликат вопроса, который связан с этим вопросом, чтобы ответить на него?
Бен

1
В C ++ оператор «->» называется «членом указателя», но оператор PHP «->» фактически ближе к «.» оператор в C ++, который называется «членом объекта».
user34660 04

Ответы:


134

Официальное название - «оператор объекта» - T_OBJECT_OPERATOR . Я называю это «стрелой».


9
Обратите внимание, что лексический токен не всегда является тем, что обычно называют этим токеном. Например, имя :: является «оператором разрешения области видимости», но указано в этой статье как T_DOUBLE_COLON. Я поставлю +1 к вам, когда получу еще несколько голосов :)
Билли Онил

1
Что ж, звучит странно, если вы читаете «И после того, как B выполняет и возвращает зарплату, A стрелка C». Это будет больше похоже на то, что A относится к C.
Бен

66
Билли прав, большинство людей называют :: a T_PAAMAYIM_NEKUDOTAYIM в обычном разговоре
Алан Сторм,

3
Я бы сказал, что это как $a->do()«метод A Do» и $a->thing«Thing свойства A», так что это относительно.
Мартин Лайн

1
Кстати, T_PAAMAYIM_NEKUDOTAYIMна иврите это означает «двойное двоеточие».
Neta

59

Я называю это « дротиком »; как в $Foo->bar(): "Foo dart bar"

Поскольку во многих языках используется «точка», Foo.bar();я хотел использовать односложное слово. «Стрела» слишком многословна! ;)

Поскольку PHP использует .«точку» для конкатенации (почему?), Я не могу с уверенностью сказать «точка» - это может сбить с толку.

Обсуждая некоторое время назад с коллегой, мы выбрали «дротик» как слово, достаточно похожее на «точку», чтобы плавно перемещаться, но достаточно отчетливое (по крайней мере, когда мы говорим это), чтобы не быть ошибочно принятым за объединяющуюся «точку». ,


1
Мне нравится это! +1 для вас. Я полагаю, что есть некоторая опасность невнятного перевода слова «дротик» в «точку» при разговоре вслух. Слишком уж плохая «стрела», наверное, намного более укоренилась.
Фил Перри

Хорошо, это ответ, который я, скорее всего, буду использовать в своей голове. Хорошее обоснование вашего ответа.
Лиам

Я запомню это точно.
Chev

Я понимаю, если вы скажете стрелку ... Я совершенно
Эмека

39

При чтении кода PHP вслух я не произносю оператор «->». Потому что $db->prepare($query);я обычно говорю «Db [короткая пауза] подготовьте запрос». Думаю, я говорю это как запятую в обычном предложении.

То же самое и с Паамаим Некудотаим ("::").


10
Паамая, что? jk
ValleyDigital


1
Мне нравится называть Паамаима Некудотаима ("::") "CoCo", сокращенно от "двоеточия"
Umbrella

14

Читая код про себя, я думаю о нем как о «собственнической вещи».

Например:

x->value = y->value

будет читать "значение x равно значению y"


9

Чаще всего я использую некоторые вариации метода @Tor Valamo («метод B для A» или «метод A для B»), но иногда я говорю «точка». Например, «вызовите точку B ()».


5
Я всегда говорю «точка б», потому что так оно и есть практически во всех других языках. Кажется, что разработчики PHP и не-PHP всегда меня понимают.
Гарет

1
Да, я возвращаюсь к «точке», поскольку она выполняет то же самое, что и оператор точки в большинстве других языков. Тогда возникает вопрос: что вы называете ->в C / C ++, где он имеет отличные от фактического оператора точки функции?
meagar

4

Оператор собственности.

При чтении $a->b()или $a->bгромко я просто говорю "позвонить b на объект $ a" или "получить b от / в / из $ a"


1
@Tor, я думаю, "оператор метода" тоже.
Маркус Адамс,

@Marcus Adams - Не совсем, поскольку методы - это просто свойства, которые в большинстве языков являются функциями. Только в PHP есть большое различие, но я бы все равно назвал это свойством.
Тор Валамо

4

Мне лично нравится быть многословным, когда я выражаю свой код устно.

например:

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

читалось бы как таковое:

echo (/ print) свойство bar объекта foo.

Это многословно и требует больше времени, но я считаю, что если у меня есть причина выражать свой код устно, то мне, вероятно, нужно четко понимать, о чем я говорю.


4

Вернемся к Cobol 'in', где вы сказали бы: "Двигайтесь 5 к b в a". Большинство языков сегодня квалифицируют вещи в другом направлении.

И все же я бы все равно читал $a->b();как "Позвони б в а".



3

Одиночная стрелка может легко обозначаться словесно как то, что она означает для PHP OOP: Member. Итак, $a->varвы бы сказали: «Объект a's member var».

При чтении кода вслух полезно читать вперед (ссылка на прогноз, извините) и знать, о чем вы на самом деле имеете в виду. Например, у нас есть следующий фрагмент кода:

<?php
  Class MyClass {
    $foo = 0;

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

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

Итак, если бы я прочитал вслух этот блок кода в качестве демонстрации кода, я бы сказал следующее:

«Определите класс MyClass, открывающая фигурная скобка. Переменная foo равна нулю, завершает строку. Определите открытую-закрывающую скобку bar, открывающую фигурную скобку. Возвращает переменную-член« foo »объекта« this », завершает строку . Закрывающая фигурная скобка, закрывающая фигурная скобка. Создание нового экземпляра MyClass (без аргументов) как переменного объекта myobject, завершение строки. Вызов метода члена 'bar' объекта 'myobject', завершение строки. "

Однако, если бы я читал код вслух, чтобы другие студенты или программисты могли скопировать его без наглядного пособия, я бы сказал:

"Открытый тег PHP (полный), новая строка, отступ, открытая фигурная скобка класса MyClass, новая строка. Отступ, ['знак доллара' | 'Объект-маркер'] foo равен 0, точка с запятой, новая строка, новая строка. Открытая панель функций. закрывающие скобки, открывающая фигурная скобка, новая строка. Отступ, возврат ['знак доллара' | 'Маркер объекта'] эта стрелка foo, точка с запятой, новая строка. Обратный отступ, закрывающая фигурная скобка, новая строка, обратный отступ, закрывающая фигурная скобка , новая строка, новая строка. ['знак доллара' | 'объект-маркер'] myobject соответствует новому MyClass открывать-закрывать круглые скобки, точку с запятой, новую строку. ['знак доллара' | 'объект-маркер'] панель стрелок myobject открывать-закрывать круглые скобки, точка с запятой, новая строка. Обратный отступ, закрывающий тег PHP. "

Где вы видите ['знак доллара' | «Объект-маркер»], просто выберите то, что вы склонны говорить для «$», я часто переключаюсь между ними, просто в зависимости от моей аудитории.

Итак, чтобы подвести итог, в PHP -> относится к члену объекта, будь то переменная, другой объект или метод.


1

Старший разработчик PHP, где я работаю, говорит "стрелка".

$A->B;

Когда он говорит мне ввести вышеуказанное, он скажет: «Доллар A стрелка B» или

$A->B();

"Доллар A стрелка B parens".


1

Я бы сделал так:

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

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

В моей книге (« PHP Master by Lorna Mitchell») это называется оператором объекта .


1

В японском языке для этого есть удобная частица «нет» (の). Это притяжательная частица, примерно означающая «относящаяся к предыдущему термину».

«Барсук Фреда» означает «барсук Фреда».

Это далеко от того, чтобы сказать, что по крайней мере мысленно, а также среди тех, кто понимает японский, я склонен различать их, читая их как:

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

Но чтение обоих как притяжательного «s» тоже работает для не говорящих по-японски. Вы также можете перевернуть их и использовать «of», так что «D of C» ... но это немного неудобно, и это трудно сделать, вы быстро читаете, потому что это нарушает ваш линейный поток.

Однако, если бы я диктовал, возможно, при парном кодировании и предлагая, что набирать, я бы назвал конкретные символы «тире больше стрелки» и «двойное двоеточие» (если я знаю человека, с которым говорю to является PHPофилом, я мог бы назвать это "paamayim nekudotayim двойное двоеточие" в первый раз, отчасти потому, что это крутая шутка, отчасти для того, чтобы они не "исправили" меня).




0

user187291 ответил на несубъективный вопрос, что касается субъективного, я говорю «суб». Например, я бы произнес $x->y«x sub y» - «sub» в этом контексте является сокращением от «subscript». Это больше подходит для обозначения массива; $x['y']Я также произносю «x sub y». Обычно при чтении кода вслух я использую свои слова, чтобы идентифицировать строку, которую может видеть другой разработчик, поэтому двусмысленность еще не стала проблемой. Я считаю, что причина в том, что я рассматриваю структуры / объекты и массивы как «коллекции», а их элементы имеют индексы, как в математической нотации.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.