PHP yöntem bağlama oluşturmak nasıl?

4 Cevap php

Bunu diğer nesneleri gördüm:

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

Bunu nasıl yapabilirim? Sadece bir nesnenin işaretçisi değiştirerek veya bir işaretçi dönen her işlevi nedir?

Ben bu tarzı için uygun terim bilmiyorum - herkes bana yardımcı olabilir, bu harika olurdu.

4 Cevap

Bu, bu nedenle bir chainable referans vererek, her işlev sonunda $this geri elde edilmektedir.

class MyClass {
    public function method1() {
        //...
        return $this;
    }
    public function method2() {
        //...
        return $this;
    }
}

Sıvı arayüzü.

Sadece set, nesnenin Metodu1 () dönmek için $ this

Eğer bir kişi sınıf var diyelim. Sen böyle bir şey yapıyor yöntemleri sahip olacaktır:

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

Zend Framework indirin ve kod kısmını kontrol - Orada bir çok şey öğrenebilirsiniz.

Ben yöntem zincirleme olarak bakın. Bkz http://www.devshed.com/c/a/PHP/Method-Chaining-in-PHP-5/1/

Ayrıca yöntem içinde

public function method1()
   // do stuff

   return $this;
}