1

重複の可能性:
PHPメソッドチェーンの混乱

私がphpクラスを持っている場合

class ClassName {
    function f1() {
        //...
    }
    function f2() {
        //...
    }
}
$cn = new ClassName();

関数をスタイリッシュに使用できるクラスを定義する方法

$cn->f1()->f2();

それ以外の

$cn->f1();
$cn->f2();

ありがとうございました。

4

2 に答える 2

6
class ClassName {
    public function f1() {
        //...
        return $this;
    }
    public function f2() {
        //...
        return $this;
    }
    // and for a static
    public static function sf1() {
        // ...
        return self;
    }
}

ただし、メソッドの連鎖は悪い考えです。コードが読みづらくなります。

同じオブジェクトのインスタンスを返す場合、それは直接有害ではありません。しかし、のようなコードを書き始めると$locator->get('MySQL')->connection()->query('SELECT 1');、コードの保守に行き詰まっている人々があなたの住んでいる場所を見つけて罰する可能性があります。

また、「しかしjqueryがそれを行う」という推論を行っている場合は、申し訳ありませんが、それは、多くの場合、何かが悪い習慣であることを示しています。

于 2012-08-12T06:46:42.200 に答える
4

関数を連鎖させるには、関数から現在のオブジェクトを返す必要があります。

return $this;

これを関数に追加しますf1()

class ClassName {
    function f1() {
        //...
        return $this;
    }
    function f2() {
        //...
        return $this;
    }
}
于 2012-08-12T06:46:20.003 に答える