いくつかの php コードを調べていたところ、同じ行で複数のメソッドを呼び出すオブジェクトが見つかりました。
その方法と、なぜそれを使用する必要があるのかを理解しようとしました。
$object->foo("Text")->anotherFoo()->bar("Aloha")
このスタイリングは何と呼ばれていますか?PHPアプリケーションでそれを使用する最良の方法は何ですか.
いくつかの php コードを調べていたところ、同じ行で複数のメソッドを呼び出すオブジェクトが見つかりました。
その方法と、なぜそれを使用する必要があるのかを理解しようとしました。
$object->foo("Text")->anotherFoo()->bar("Aloha")
このスタイリングは何と呼ばれていますか?PHPアプリケーションでそれを使用する最良の方法は何ですか.
この構文はメソッド チェーンと呼ばれ、各メソッドがオブジェクト自体を返すため可能です ( $this
)。これは必ずしもそうであるとは限りません。オブジェクトのプロパティを取得するためにも使用されます。このプロパティは、オブジェクトになることもできます (オブジェクトなどのプロパティを持つことができます)。
コードを記述する必要がある行の量を減らすために使用されます。次の 2 つのスニペットを比較してください。
連鎖なし
$object->foo("Text");
$object->anotherFoo();
$object->->bar("Aloha");
メソッドチェーンの使用
$object->foo("Text")->anotherFoo()->bar("Aloha");
これは、最初の関数が別のオブジェクトを返す 2 番目の関数を含むオブジェクトを返す場合などに使用されます...
class X
{
public function A()
{
echo "A";
}
public function B()
{
echo "B";
}
}
class Y
{
public function A()
{
echo "Y";
}
public function B()
{
return $this;
}
}
$y = new Y();
$y->B()->A();//this will run
$x = new X();
$x->A()->B();//this won't run, it will output "A" but then A->B(); is not valid