为什么php中的代码行中会有多个对象运算符?

why would there be more than one object operator in a line of code in php?

我是一个n00b绑定来了解操作符语法。我知道它被称为对象操作符,我可以看到它是如何使用的(在PHP中,我们在哪里使用对象操作符"->"呢?)独自一人。

我试图了解当它们像这样串在一起时的目的(例如"switch($this->request->param('id')):

下面是一个使用Kohana的站点的代码片段:

1
2
3
4
5
6
7
8
9
public function action_list()
{
    $connections = ORM::factory('Connection')
        ->with('property')
        ->with('inviter');
    switch ($this->request->param('id')) {
    // more code...
        }
    }


这叫做"方法链接"。它允许您在一个调用中应用多个方法,从而执行多个操作。这有点像是嵌套函数的OOP等价物。


它通常被称为链接。当一个方法返回一个对象时,您可以对返回的对象调用另一个方法。考虑这样的事情:

1
2
3
4
5
6
7
8
9
10
11
class A {
    public $numbers = 0;
    public function addNumber($num) {
        $this->numbers += $num;
        return $this;
    }

}

$a = new A();
$a->addNumber(1)->addNumber(2);

addNumber正在返回自身的一个实例,因此您可以重复调用addnumber。

通常情况下,一个方法会返回另一个对象的实例,但同样的原则也适用。