Как создать привязку метода PHP?


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

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

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

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

Author: Charles, 2010-06-03

4 answers

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

class MyClass {
    public function method1() {
        //...
        return $this;
    }
    public function method2() {
        //...
        return $this;
    }
}
 5
Author: Lotus Notes, 2010-06-02 22:50:04

Интерфейс жидкости.

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

 4
Author: Mark Baker, 2010-06-02 22:49:01

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

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

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

 1
Author: ronaldosantana, 2010-06-02 22:51:26

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

Также внутри вашего метода

public function method1()
   // do stuff

   return $this;
}
 1
Author: dalton, 2010-06-02 22:53:06