Php一个接一个地调用同一个类的功能

时间:2013-12-24 11:52:25

标签: php

我想写一些像(laravel使用):

View::make('FooBarView')->with('foo', $foo)
                        ->with('bar', $bar);

我的知识和想象力让我使用了新的自我实例。但我不认为这是最好的想法,我无法处理它。

由于我认为我的关键字不好,谷歌无法帮助我。我不想让你为我编写代码,但这个设计模式的名称是什么?或者其他什么?

在laravel的源代码中,功能使用

return $this;

但是如何在make之后使用它?

顺便说一下,在这个例子中; with method可帮助您为视图的渲染设置变量。

1 个答案:

答案 0 :(得分:4)

要调用函数返回的内容,函数必须返回可以调用的内容。

在这种情况下,您可以返回“this”:

class View {
  /** 
  * @returns View
  */
  public static function make($foo) { 
    /* do stuff, return new View instance */ 
    return new View();
  }
  /** 
  * @returns View
  */
  public function with($foo, $bar){
    /* do stuff */
    return $this;
  }
}

这样,无论何时调用with,都会返回类实例,而后者又可以调用:

 View::make("foo")->with("foo")->with("bar");
 // Will be same as:
 $v = View::make("foo");
 $v = $v->with("foo");
 $v = $v->with("bar");