什么是“->” PHP运算符,当大声读出代码时怎么说?[关闭]


127

您如何称呼->PHP中的这种箭头式运算符?

它可以是减号,破折号或连字符,后接大于号(或右V形)。

大声朗读代码时如何发音?


12
为什么将这个问题作为与该问题链接以回答该问题的重复项而关闭?
2014年

1
在C ++中,“->”运算符称为“指针成员”,而PHP的“->”运算符实际上更接近于“”。C ++中的运算符,称为“对象成员”。
user34660 '16

Answers:


134

正式名称是“对象运算符” -T_OBJECT_OPERATOR。我称它为“箭头”。


9
请注意,词汇标记并不总是该标记通常所指的。例如,::的名称是“范围分辨率运算符”,但在该文章中列为T_DOUBLE_COLON。当我获得更多投票时,我会为您+1 :)
比利·奥尼尔

1
好吧,如果您读到“然后B执行并返回薪水,A箭头C”,听起来就很奇怪。这将是更像是指C.

66
比利(Billy)的权利,大多数人在随意交谈中都将::称为T_PAAMAYIM_NEKUDOTAYIM
艾伦·斯托姆

3
我会说它$a->do()是“ A的方法Do”,并且$a->thing是“ A的属性Thing”,所以它是相对的。
马丁·林恩

1
顺便说一句,T_PAAMAYIM_NEKUDOTAYIM在希伯来语中确切地表示“双冒号”。
塔2015年

59

我称之为“ 飞镖 ”;如$Foo->bar():“ Foo dart bar”

由于许多语言都使用“点”,因此Foo.bar();我希望使用一个音节的单词。“箭头”太long了!;)

由于PHP使用.“点”进行连接(为什么?),所以我不能安全地说“点”,这可能会造成混淆。

与同事讨论时,我们决定将“飞镖”定义为与“点”相似的词,以使其顺畅地流动,但又有足够的区别(至少在我们说出来时),不要被误认为是串联的“点” 。


1
我喜欢!为您+1。我想大声说话时有将“飞镖”变成“点”的危险。糟糕的“箭头”可能更加根深蒂固。
Phil Perry

很好,这是我最有可能在脑海中使用的答案。您的答案有充分的道理。
利亚姆2013年

我一定会记住这一点。
Chev

我确实了解您是否说过箭...如果您提到飞镖,我会完全迷失
Emeka Mbah

39

当大声阅读PHP代码时,我不会发音“->”运算符。因为$db->prepare($query);我通常会说“ Db [短暂停]准备查询”。所以我想我说的就像普通句子中的逗号一样。

Paamayim Nekudotayim(“ ::”)也是如此。


10
Paamayah哇?jk
ValleyDigital


1
我喜欢称Paamayim Nekudotayim(“ ::”)“ CoCo”为“冒号”的简称
Umbrella

14

当我自己阅读代码时,我认为它就像是“占有欲”。

例如:

x->value = y->value

将读取“ x的值等于y的值”


9

大多数情况下,我对@Tor Valamo的方法(“ A的B方法”或“ A的B方法”)使用一些变体,但有时会说“点”。例如“调用A点B(​​)”。


5
我总是说“ a b”,因为几乎所有其他语言都是这样。PHP和非PHP开发人员似乎总是很了解我。
加雷斯

1
是的,我退回到“点”,因为在大多数其他语言中,它完成的功能与点运算符相同。问题就变成了,您->在C / C ++中调用什么功能与实际点运算符不同的功能?
meagar

4

物业经营者。

在朗读$a->b()$a->b大声说话时,我只说“在$ a obj上调用b”或“从$ a中/在$ a中获取b”


1
@Tor,我想也是“方法运算符”。
Marcus Adams'4

@Marcus Adams-并非如此,因为方法只是大多数语言中恰好是函数的属性。虽然仅在PHP中有一个很大的区别,但是我仍然将其称为属性。
Tor Valamo

4

我个人喜欢用口头表达我的代码时很冗长。

例如:

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

内容如下:

echo(/ print)对象foo的bar属性。

它冗长且耗时,但是我发现如果有理由要我口头表达我的代码,那么我可能需要弄清楚我到底要传达什么。


恐怕你迷失了我,托马斯。:/ 你什么意思?
Craige'October

4

回到Cobol的“ in”处,您会说“在a中将5移动到b”。如今,大多数语言都将事物限定为另一个方向。

但是我仍然会读$a->b();为“ a中的b呼叫”。


4
$a->b 

我称之为“ $ a的参数b”。

$a->b()

我称其为“ $ a的函数b”。


3

单个箭头可以很容易地在口头上表示对PHP OOP:Member的含义。因此对于$a->var您会说“对象a的成员var”。

大声阅读代码时,提前阅读(提前参考,对不起)并知道您可能实际在指的内容确实有帮助。例如,让我们有以下代码:

<?php
  Class MyClass {
    $foo = 0;

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

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

因此,如果我要大声阅读此代码块作为代码演示,我会这样说:

“定义类'MyClass',大括号。变量'foo'等于零,终止行。定义公共函数'bar'开闭括号,大括号。返回对象变量'this'的成员变量'foo',终止行关闭括号,关闭括号。将MyClass的新实例实例化(无自变量)作为变量对象myobject,终止行。调用对象myobject的成员方法bar终止行。”

但是,如果我正在大声阅读代码以供其他学生或程序员在没有视觉效果的情况下进行复制,那么我会说:

“ PHP开放标记(完整),换行,缩进,类MyClass开放括号,换行。缩进,['美元符号'|'对象标记'] foo等于0,分号,换行,换行。公共功能栏开放-右括号,开括号,换行符缩进,返回['dollar-sign'|'Object-marker']此箭头foo,分号,换行符。反向缩进,闭括号,换行符,反向缩进,闭括号,换行,换行[[美元符号] |'对象标记'] myobject等于新的MyClass开闭括号,分号,换行符[[美元符号] |'对象标记'] myobject箭头条开闭括号,分号,换行符。反向缩进,PHP关闭标记。”

在哪里看到['美元符号'| '对象标记'],只要选择您倾向于说“ $”的那个,我就会经常在这两个词之间切换,这取决于我的听众。

因此,总而言之,在PHP中,->是指对象的成员,可以是变量,另一个对象或方法。



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();

在我的书(Lorna Mitchell的PHP Master)中,将其称为对象运算符


1

日语对此有一个方便的词“ no”(の)。它是所有格粒子,大致意思是“与前一个术语有关”。

“ Fredのbadge”的意思是“ Fred的s”。

这是一个漫长的回合,至少在思想上,以及在那些懂日语的人中,我倾向于通过将它们读为来区分它们:

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

但是对于非日语使用者来说,将它们都读为所有格“'”也是可以的。您也可以翻转它们并使用“ of”,因此使用“ D of C” ...但这有点尴尬,并且很难快速阅读,因为它破坏了线性流。

但是,如果我要说的话,也许在配对编码并建议键入内容时,我会将特定字符称为“破折号-大于箭头”和“双冒号”(如果我知道我在说的人) to是PHPophile,我可能会第一次将其称为“ paamayim nekudotayim双冒号”,部分是因为这是一个很酷的玩笑,部分是为了防止他们“纠正”我。




0

user187291已回答了非主观问题,至于主观问题,我说“ sub”。例如,$x->y在这种情况下,我会发音为“ x sub y”-“ sub”是“下标”的缩写。这更适合于数组表示法。$x['y']我也发音“ x sub y”。通常,当大声朗读代码时,我会用我的文字来识别其他开发人员可以看到的一行,因此歧义尚未成为问题。我相信原因是我将结构/对象和数组视为“集合”,并且将其元素下标为数学符号。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.