2

我见过这样的事情:

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

这是什么意思?

我会尽量让我的问题更清楚:

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

当我们拥有时,$domain->something->run();我们正在告诉我们 $DOMAIN OBJECT 的一些属性来访问 run() 方法。精确的?

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

提前致谢, MEM

4

3 回答 3

4

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

于 2010-06-28T15:39:07.570 回答
2

+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);
于 2010-06-28T15:44:36.687 回答
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

于 2010-06-28T18:24:54.683 回答