Як називається “->” PHP-оператор і як це сказати, читаючи код вголос? [зачинено]


127

Як ви називаєте цього ->оператора, який шукає стрілку, знайденого в PHP?

Це або знак мінуса, тире або дефіс, за яким слід більший за знак (або правий шеврон).

Як ви вимовляєте це, читаючи код вголос?


12
Чому це запитання було закрито як дублікат запитання, яке посилається на це питання, щоб відповісти на нього?
Бен

1
У C ++ оператор "->" називається "членом покажчика", але оператор PHP "->" насправді ближче до ". оператора в C ++ і називається "членом об'єкта".
user34660

Відповіді:


134

Офіційна назва - "оператор об'єкта" - T_OBJECT_OPERATOR . Я називаю це «стрілою».


9
Зауважте, що лексична лексема - це не завжди те, що зазвичай називається. Наприклад, ім'я :: "є" оператором вирішення сфери дії ", але в цій статті зазначено як T_DOUBLE_COLON. Я
поставляю

1
Ну, це звучить дивно, якщо ви читаєте "А після того, як Б виконує і повертає зарплату, стрілка С". Це буде більше схоже на A, що стосується C.
Ben

66
Право Біллі, більшість людей називає :: T_PAAMAYIM_NEKUDOTAYIM у випадковій розмові
Алан Шторм

3
Я б сказав, що це як $a->do()"метод A" і $a->thing"є властивістю A", тому це відносно.
Мартін Лін

1
Btw, T_PAAMAYIM_NEKUDOTAYIMточно означає "подвійний двокрап" на івриті.
Нета

59

Я називаю це " дротиком "; як у $Foo->bar(): "Foo dart bar"

Оскільки багато мов використовують "крапку", як у Foo.bar();мене, я хотів використовувати односкладне слово. "Стріла" просто занадто довговітча! ;)

Оскільки PHP використовує . "крапку" для конкатенації (чому?), Я не можу сміливо сказати "крапка" - це може сплутати.

Обговорюючи з колегою деякий час назад, ми зважилися на "дротик" як слово, схоже на "крапка", щоб текти зручно, але досить чітко (принаймні, коли ми це говоримо), щоб не помилитися з примикаючою "крапкою" .


1
Мені це подобається! +1 для вас. Я припускаю, що існує певна небезпека, коли «голову» вирветься в «крапку», коли виголошується вголос. Дуже погана "стрілка", напевно, набагато більше закріпилася.
Філ Перрі

Приємно, це відповідь, яку я, швидше за все, буду використовувати в голові. Гарне обґрунтування вашої відповіді.
Ліам

Я запам'ятаю це точно.
Шев

Я розумію, якщо ти
кажеш

39

Читаючи код PHP вголос, я не вимовляю оператора "->". Бо $db->prepare($query);я переважно кажу "Db [коротка пауза] підготуйте запит". Тому я здогадуюсь, що я говорю це як кома у звичайному реченні.

Те ж саме стосується і Паакаїма Некудотайма ("::").


10
Паамая що? jk
ValleyDigital


1
Мені подобається називати Paamayim Nekudotayim ("::") "CoCo" як скорочення до "colon colon"
Парасолька

14

Читаючи код собі, я думаю про це як про "посівну річ".

Наприклад:

x->value = y->value

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


9

Найчастіше я використовую деяку варіацію методу @Tor Valamo ("метод B A" або "A B метод"), але іноді кажу "крапка". Наприклад, "зателефонувати в крапку B ()".


5
Я завжди кажу "крапка b", тому що так це є майже у всіх інших мовах. PHP та не-PHP розробники завжди, здається, мене розуміють.
Гарет

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

4

Оператор нерухомості.

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


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

@Marcus Adams - Не дуже, тому що методи - це лише властивості, які є функціями на більшості мов. Тільки в PHP є велика відмінність, але я все-таки називаю це властивістю.
Tor Valamo

4

Мені особисто подобається бути багатослівним у висловленні свого коду усно.

наприклад:

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

буде читати як таке:

echo (/ print) властивості смуги об'єкта foo.

Це багатослівно і забирає більше часу, але я знаходжу, якщо є причина, щоб я висловлював свій код усно, то, мабуть, мені потрібно зрозуміти, що саме я повідомляю.


Боюся, ти мене загубив, Томаш. :/ Що ви маєте на увазі?
Крейдж

4

Гарчіть назад до Кобола "в", де ви б сказали "Перемістіть 5 на b в a" Більшість мов сьогодні кваліфікують речі іншого напрямку.

Але я б все ще читав $a->b();як "Дзвінок b в a".


4
$a->b 

Я називаю "param b $ a".

$a->b()

Я називаю "функцією b $ a".


3

Одну стрілку можна легко позначати усно як те, що означає для PHP OOP: Учасник. Отже, для$a->var ви б сказали: "Об'єкт-член-вар".

Читаючи код вголос, це допомагає читати вперед (посилання на пошуки, вибачте), і знати, на що ви можете насправді мати на увазі. Наприклад, давайте наступний біт коду:

<?php
  Class MyClass {
    $foo = 0;

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

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

Отже, якби я читав уголос цей блок коду як демонстрацію коду, я сказав би це:

"Визначте клас" MyClass ", відкрита дужка. Змінна 'foo' дорівнює нулю, кінцева лінія. Визначте загальну функцію 'bar' в дужках з відкритим закриттям, відкритим дужкою. . Close-brace, close-brace. Негайний новий екземпляр "MyClass" (без аргументів) як змінний об'єкт "myobject", термінал завершення. Метод виклику члена "bar" об'єкта "myobject", завершення рядка ".

Однак якби я читав код вголос, щоб інші студенти чи програмісти копіювали без наочності, то я б сказав:

"PHP відкритий тег (повний), новий рядок, відступ, клас MyClass open-brace, newline. Відступ, ['знак-долар' | 'Маркер об'єкта'] foo дорівнює 0, крапка з комою, новий рядок, новий рядок. закрити дужки, відкрита дужка, новий рядок. Відступ, повернути ['знак долара' | 'Маркер об'єкта'] ця стрілка, колонка, крапка з комою, новий рядок. Зворотний відступ, близький дужок, новий рядок, зворотний відступ, близький дужки. , новий рядок, новий рядок. ['знак-долар' | 'Маркер об'єкта'] мій об’єкт дорівнює новим дужкам MyClass з відкритим закриттям, крапкою з комою, новою лінією. круглі дужки, крапка з комою, новий рядок. Зворотний відступ, PHP тег. "

Де ви бачите ['знак долара' | "Об'єкт-маркер"], просто вибирайте те, що ви схильні говорити за "$", я часто перемикаюся між двома, просто залежить від моєї аудиторії.

Отже, підсумовуючи це, в PHP, -> посилається на член об'єкта, будь то змінною, іншим об'єктом або методом.


1

Старший розробник PHP, де я працюю, каже "стрілка".

$A->B;

Коли він скаже мені набрати вище, він скаже: "Долар А стрілка В" або "за"

$A->B();

"Парель долара А парен."


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 від Lorna Mitchell) вона називається оператором об'єктів .


1

У японця є зручна для цього частинка "ні" (の). Це присвійна частка, що приблизно означає "відношення до попереднього терміна".

"Бард Фред の" означає "борсук Фреда".

Який шлях можна сказати, що принаймні подумки, а також серед тих, хто розуміє японську мову, я схильний розмежовувати їх, читаючи їх як:

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

Але читання як "прихильне" працює також для не-японських мовців. Ви також можете перевернути їх і використовувати "з", так що "D з C" ... але це якось незручно, і важко це зробити, ви швидко читаєте, оскільки він порушує ваш лінійний потік.

Якби я диктував, хоча, можливо, коли кодує пару і підказує, що слід вводити, я б позначав конкретні символи як "тире, більший за стрілку" і "подвійний двокрапка" (якщо я знаю людину, про яку я говорю to є PHPofhile, я можу назвати, що "paamayim nekudotayim подвійною двокрапкою" вперше, почасти тому, що це крутий жарт, частково для того, щоб не допустити їх "виправлення" мене).




0

користувач187291 відповів на суб'єктивне запитання, що стосується суб'єктивного, я кажу "суб". Наприклад, я б назвав $x->y"x sub y" - "sub" в цьому контексті скороченням "subcript". Це більше підходить для позначення масиву; $x['y']Я також вимовляю "x sub y". Як правило, читаючи код вголос, я використовую свої слова, щоб визначити рядок, який може побачити інший розробник, тому неоднозначність ще не стала проблемою. Я вважаю, що причина полягає в тому, що я розглядаю структури / об'єкти та масиви як "колекції", а елементи їх підписуються як у математичних позначеннях.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.