当我们使用这样的两个对象运算符标记时,Object结构可以是什么 - > - &GT ;?

时间:2010-06-28 15:36:29

标签: php oop object operator-keyword

我见过这样的事情:

echo ($hello->somethingA->somethingB);

这是什么意思?

我会尽力使我的问题更清楚:

当我们有$domain->something;时(我们正在访问$ domain OBJECT的某些属性。精确吗?

当我们有$domain->something->run();时,我们告诉我们$ DOMAIN OBJECT的某些属性来访问run()METHOD。精确?

那么我们在说什么:echo ($hello->somethingA->somethingB);?访问一些属性属性?这有道理吗?

提前致谢, MEM

3 个答案:

答案 0 :(得分:4)

是的,您正在访问酒店的财产。显然,$ hello是一个名为$ somethingA的属性的对象。该属性是一个具有名为$ somethingB的属性的对象。 $ somethingB显然是一个可以回显的字符串或其他类型。

答案 1 :(得分:2)

给Scott Saunders +1,这是一个例子来说明它:

class Hello 
{
  /**
   * @var SomethingA
   */
  public $somethingA;
}

class SomethingA
{
  /**
   * @var, don't know what type
   */
  public $somethingB;
}

$hello = new Hello();
$hello->somethingA = new SomethingA();
$hello->somethingA->somethingB = new stdClass();

var_dump($hello);

答案 2 :(得分:0)

另一个方面还没有在其他答案中探讨过。您正在访问属性的其他答案,而不是方法。但PHP5的对象可以用于链式方法,也许这就是你所指的。

而不是:

$obj = new Object();
$obj->setId('1');
$obj->setName('name');
$obj->setAge('24');

你可以这样做:

$obj = new Object();
$obj->setId('1')->setName('name')->setAge('24');

在每种方法中,返回$this并且你是金色的。有关更多详细信息和灵感,请参阅此文章:

http://www.talkphp.com/advanced-php-programming/1163-php5-method-chaining.html