什么是“ – >”PHP运算符叫,当你大声朗读代码的时候怎么说呢?

你看什么叫这个箭头->运营商在PHP中find?

这是一个减号,短划线或连字符,然后是一个大于号(或右人字形)。

大声朗读代码时你怎么读?

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

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

由于许多语言使用Foo.bar(); “点” 我想要一个单音节词来使用。 “箭”太漫长了! ;)

自PHP使用. 为什么连接(为什么?)我不能安全地说“点” – 它可能会混淆。

我们和同事讨论了一下,我们决定把“飞镖”当作一个类似于“点”的词来舒适地stream动,但是足够明显的(至less在我们说出来的时候)不要误认为一个串联的“点” 。

当大声阅读PHP代码时,我不会发音“ – >”运算符。 对于$db->prepare($query); 我主要说“Db [短暂停顿]准备查询。” 所以我想我在正常的句子中用逗号来说。

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

在阅读代码给我自己的时候,我想它就像一个“占有物”。

例如:

 x->value = y->value 

会读“x的值等于y的值”

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

物业经营者。

当读$a->b()$a->b我只是说“在$ a obj上调用b”或者“从$ a中获取b”

回头看看Cobol'在'你会说'移动5到b'。 今天大多数语言都认为这是另一个方向。

然而,我仍然会读$a->b(); 作为“打电话给b”。

 $a->b 

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

 $a->b() 

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

我个人喜欢用口头expression我的代码。

例如:

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

会这样读:

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

这是冗长而费时的,但是我发现如果我有口头expression自己的代码的理由,那么我可能需要清楚自己正在沟通什么。

单个箭头可以很容易地被称为PHP OOP:Member的含义。 所以,对于$a->var你会说“Object a的成员var”。

当大声阅读代码时,它有助于提前阅读(lookahead reference,对不起),并知道你可能实际上指的是什么。 例如,让我们有以下一些代码:

 <?php Class MyClass { $foo = 0; public function bar() { return $this->foo; } } $myobject = new MyClass(); $myobject->bar(); ?> 

所以,如果我大声朗读这个代码块作为代码的演示,我会这样说:

定义类'MyClass',打开大括号,variables'foo'等于零,终止行定义公共函数'bar'开关圆括号,打开大括号返回对象'this'的成员variables'foo',终止行。Close-brace,close-brace。实例化'MyClass'的新实例(无参数)作为variables对象'myobject',终止行。调用对象'myobject'的成员方法'bar',终止行。

但是,如果我为其他学生或程序员大声阅读代码而无视觉复制,那么我会说:

“开放标记(全部)”,换行符,缩进,类MyClass开放大括号,换行符缩进,['dollar-sign'|'Object-marker'] foo等于0,分号,换行符,换行符public function bar open-closures圆括号,打开大括号,换行符。缩进,返回['美元符号'|'对象标记']这个箭头foo,分号,换行符。 ,newline,newline。['dollar-sign'|'Object-marker'] myobject等于新的MyClass开 – 关圆括号,分号,换行符['dollar-sign'|'Object-marker'] myobject arrow bar open-close括号,分号,换行符,反向缩进,PHPclosures标签“。

你在哪里看到['dollar-sign'| '对象标记'],只要select你倾向于说'$'的任何一个,我经常在两者之间切换,这取决于我的观众。

因此,总结一下,在PHP中, – >指的是一个对象的成员,可以是variables,另一个对象或方法。

我工作的高级PHP开发人员说“箭头”。

 $A->B; 

当他要求我input上面的内容时,他会说:“美元箭头B”或者

 $A->B(); 

“美元箭头B负责人。”

我会这样做:

 //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 )中,它被称为对象操作符

目的。 所以$a->$b->$c将是'A对象B对象c'。

->是面向对象模式下用于PHP的属性运算符。

user187291回答了非主观的问题,至于主观的问题,我说“sub”。 例如,我会将$x->y为“x sub y” – 在这种情况下,“sub”是“下标”的缩写。 这对于数组表示法更合适。 $x['y']我也发音为“x sub y”。 通常在大声朗读代码时,我正在用我的话来识别其他开发者可以看到的一行,所以这个含糊不清的问题还没有成为一个问题。 我相信原因是我认为结构体/对象和数组是“集合”,其元素如math符号下标。

日语有一个方便的粒子,“不”(の)。 它是占有性的微粒,大致意思是“与前一项有关”。

“弗雷德の獾”的意思是“弗雷德的獾”。

至less在精神上以及在懂日语的人之间,我有一个漫长的说法,我倾向于通过阅读他们来区分他们:

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

但是对于非日语使用者来说,作为所有格的“s”阅读也是有效的。 你也可以翻转它们并使用“of”,所以“C的D”……但是这样做很尴尬,很难做到,因为它会打破你的线性stream动。

如果我是口授的,也许在编码和提示什么types的时候,我会把特定的字符称为“破折号 – 大于箭头”和“双冒号”(如果我知道我在说话的人因为这是一个很酷的玩笑,部分原因是为了防止他们“纠正”我)。