簡體   English   中英

如何在PHP5中構建多oop函數

[英]How to build multi oop functions in PHP5

我在PHP5中有一個關於OOP的問題。 我看到越來越多的代碼編寫如下:

$object->function()->first(array('str','str','str'))->second(array(1,2,3,4,5));

但我不知道如何創建這種方法。 我希望有人能在這里幫助我,:0)非常感謝。

在你自己的類中鏈接類似方法的關鍵是返回一個對象(幾乎總是$this ),然后它被用作下一個方法調用的對象。

像這樣:

class example
{
    public function a_function()
    {
         return $this;
    }

    public function first($some_array)
    {
         // do some stuff with $some_array, then...
         return $this;
    }
    public function second($some_other_array)
    {
         // do some stuff
         return $this;
    }
}

$obj = new example();
$obj->a_function()->first(array('str', 'str', 'str'))->second(array(1, 2, 3, 4, 5));

注意,可以返回$this以外的對象,上面的鏈接實際上只是一個更短的方式來說$a = $obj->first(...); $b = $a->second(...); $a = $obj->first(...); $b = $a->second(...); ,減去設置變量的丑陋,你將永遠不會再次使用。

$object->function()->first(array('str','str','str'))->secound(array(1,2,3,4,5));

這不是嚴格有效的PHP,但是這說的是......你在$ object類上調用一個方法,該方法本身返回一個對象,在該對象中調用一個名為first()的方法,該方法還返回一個對象,其中你正在調用一個名為second()的方法。

因此,這不一定只是一個類(盡管它可能是)一個方法,這是一系列可能不同的類。

就像是:

class AnotherClass {
    public function AnotherClassMethod() {
        return 'Hello World';
    }
}

class MyClass {
    public function MyClassMethod() {
        return new AnotherClass();
    }
}

$object = new MyClass();
echo $object->MyClassMethod()->AnotherClassMethod();  // Hello World

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM