jQuery を使用すると、メソッドをチェーンできます。PHPでも同じことを見たのを覚えているので、これを書きました:
class cat {
function meow() {
echo "meow!";
}
function purr() {
echo "purr!";
}
}
$kitty = new cat;
$kitty->meow()->purr();
チェーンを機能させることができません。鳴き声の直後に致命的なエラーが発生します。
jQuery を使用すると、メソッドをチェーンできます。PHPでも同じことを見たのを覚えているので、これを書きました:
class cat {
function meow() {
echo "meow!";
}
function purr() {
echo "purr!";
}
}
$kitty = new cat;
$kitty->meow()->purr();
チェーンを機能させることができません。鳴き声の直後に致命的なエラーが発生します。
catの例に答えるには、catのメソッドが$this
現在のオブジェクトインスタンスであるを返す必要があります。次に、メソッドをチェーンできます。
class cat {
function meow() {
echo "meow!";
return $this;
}
function purr() {
echo "purr!";
return $this;
}
}
今、あなたはすることができます:
$kitty = new cat;
$kitty->meow()->purr();
このトピックに関する非常に役立つ記事については、こちらを参照してください:http ://www.talkphp.com/advanced-php-programming/1163-php5-method-chaining.html
「連鎖可能」にしたい各メソッドの最後に以下を配置します。
return $this;
$this
メソッド、つまりオブジェクト自体 (への参照) から戻るだけです。
class Foo()
{
function f()
{
// ...
return $this;
}
}
これで、心ゆくまで連鎖できます。
$x = new Foo;
$x->f()->f()->f();