0

いくつかのクラスを作成しようとしていますが、この構文を使用したいと思います:

$my = new My();
$my->field()->test('test');

を行う方法は知っていますが、簡単ですが、属性を追加して、コード内のクラスをより簡単に理解できるよう$my->test('test')にする方法がわかりません。field()

クラスから別のクラスへの拡張のようなものだと推測できますが、それについてはよくわかりません。同様のことを行う方法を知っていれば。

私はそれが私のクラスをよりよく理解するためだけのものだと正確に言います。Myつまり、このクラスの関数を分類することが目的です。

ありがとうございました :)

4

2 に答える 2

2

PHP を少し分解すれば、何が起こっているのか理解できます。たとえば、次のようにします。

$my->field()->test('test');  

これに(明確化のため)。

$newObject = $my->field();
$newObject->test('test');

ここから、メソッド $my->field() の戻り値が実際には別のメソッド test を持つオブジェクトであり、それを呼び出すことができることがわかります。これはメソッドチェーンと呼ばれ、便利な場合があります。

テストケースは次のとおりです。

class a{
    public function My(){
        return new b;
    }
}

class b{
    public function foo(){
        echo 'hello bar';
    }
}

$a = new a();
$a->My()->foo();
于 2012-07-03T09:50:23.187 に答える
0

メソッドでアクションを実行するには、メソッドがオブジェクトを返す必要があります。

class a {
   public function b($c){
       echo $c;
       return $this;
   }
 }

許可する

$d = new a();
$d->b("foo")->b("bar");
$d->b("foo")->b("bar")->b("far")->b("tar");
于 2012-07-03T14:46:30.523 に答える