Как создать ссылку на метод PHP? - PullRequest
2 голосов
/ 03 июня 2010

Я видел другие объекты, которые делают это:

$obj->method1()->method2();

Как мне это сделать? Каждая функция просто изменяет указатель объекта или возвращает указатель?

Я не знаю подходящего термина для этого стиля - если бы кто-нибудь мог мне помочь с этим, было бы здорово.

Ответы [ 4 ]

5 голосов
/ 03 июня 2010

Это достигается путем возврата $this в конце каждой функции, что дает цепную ссылку.

class MyClass {
    public function method1() {
        //...
        return $this;
    }
    public function method2() {
        //...
        return $this;
    }
}
4 голосов
/ 03 июня 2010

Жидкостный интерфейс.

Просто установите method1 () вашего объекта, чтобы он возвращал $ this

1 голос
/ 03 июня 2010

Я называю это цепочкой методов.См. http://www.devshed.com/c/a/PHP/Method-Chaining-in-PHP-5/1/

также в вашем методе

public function method1()
   // do stuff

   return $this;
}
1 голос
/ 03 июня 2010

Допустим, у вас есть класс Person. Ваши методы будут делать что-то подобное:

public function setName($name)
{
    $this->name = $name;
    return $this; // We now return $this (the Person)
}

Загрузите Zend Framework и проверьте часть кода - вы можете многому научиться там.

...