类中使用的PHP类?

时间:2011-10-01 13:27:09

标签: php class

我理解$something->function();正在调用类中的函数,但$something->somethingelse->function();是什么意思?

3 个答案:

答案 0 :(得分:1)

我认为你的意思是$something->somethingelse->function()

这意味着名为$something的{​​{1}}属性是具有方法$somethingelse的另一个对象。

function()

答案 1 :(得分:1)

你可以这样说:

class foo {
  public $bar;
}

class bar {
  public $baz;
}

class baz {
  function blip() { echo "Hello World"; }
}

$foo = new foo();
$foo->bar = new bar(); // setting bar to new object
$foo->bar->baz = new baz(); // setting baz to new object
$foo->bar->baz->blip(); // calling the blip function

答案 2 :(得分:0)

实例$ some的类包含一个名为$ somethingelse的实例变量,它也是一个对象(类的实例)。

这被认为是一种不好的做法(见Law of Demeter on Wikipedia)。

Peter Van Rooijen Law of Demeter is on c2.com的一个很好的解释是:

  

你可以自己玩。

     

你可以玩自己的玩具(但你不能将它们分开),

     

你可以玩给你的玩具。

     

你可以玩自己制作的玩具。

那是用简单的英语:

  

您的方法可以直接调用其类中的其他方法

     

您的方法可以直接在自己的字段上调用方法(但不能在字段的字段上调用)

     

当你的方法接受参数时,你的方法可以直接调用这些参数的方法。

     

当您的方法创建本地对象时,该方法可以调用方法           本地对象。

BUT

  

不应该在全局对象上调用方法

     

除了一个类之外,其他类中不应该有一个消息链a.getB()。getC()。doSomething()。

另一个有趣的读物是Law of Demeter Revisited,用于不太严格的方法。