考虑这个PHP示例:
class A
{
public function getB( )
{
return new B();
}
}
class B
{
public function test( )
{
echo "Hello";
}
}
我可以用这个:
$a = new A( );
$b = $a->getB( );
$b->test( ); // Hello
或者这个:
$a = new A();
$a->getB( )->test( ); // Hello
仔细研究第二个例子......
这是否与取消引用有关?
可以使用哪种编程语言?
答案 0 :(得分:2)
它被称为method chaining,你可以用很多语言看到它。它并不完全取消引用;每个方法调用都返回一个对象,下一个方法将该对象作为活动对象。这是PHP和JavaScript中的一个非常熟悉的概念(想想jQuery)和许多语言,每个语言都有自己的调用惯用语。
答案 1 :(得分:1)
处理对象时,解除引用操作符用于从对象名称访问对象。在您给出的示例中 - >是解除引用操作符,因此您在示例中使用解除引用。
第一个示例是创建一个显式命名的对象,您将其命名为$ b。在第二个示例中,您还创建了对象,但您没有命名它,您正在匿名使用它。但在这两种情况下,您都在创建一个对象并通过解除引用操作符访问它。
这种类型的语句可用于所有面向对象的语言。