使用$ this就像在php类中返回方法一样

时间:2011-08-22 20:49:58

标签: php oop

  

可能重复:
  PHP method chaining benefits?
  PHP OOP: Method Chaining

有人可以告诉我为什么要使用 返回$ this; 在php类方法中, 我在一些方法类中看到过:

public function registerPrefix($prefix, $path)
{

    if(isset($this->prefixes[$prefix])) {
        $path = array_merge($this->prefixes[$prefix], (array) $path);
    }
    $this->prefixes[$prefix] = (array) $path;
    return $this;
}



public function register()
{
    spl_autoload_register(array($this, 'loadClass'));
    return $this;
}

感谢

7 个答案:

答案 0 :(得分:4)

因此方法调用是可链接的,例如

$myobj->registerPrefix("something", "something")->register();

如果从方法调用返回对象本身,则可以在方法的返回值上调用方法。

答案 1 :(得分:1)

这允许调用相同对象的多个方法,如下所示:

$object->registerPrefix(...)->register();

这允许创建流畅/可链接的接口。

答案 2 :(得分:1)

它允许链接方法调用,例如:

$ob->step1()->step2()->step3();

如同:

$ob->step1();
$ob->step2();
$ob->step3();

答案 3 :(得分:1)

通常使用return使函数返回值。

具体来说,您使用return $this来返回对象。

这有时用于方法链接:

$that = new ThisClass();

$that->does()->what()->ever();

前段时间是现代的。可能有帮助,但有限制:

$that->does()->what()->ever()->and()->how()->to()->handle()->errors()->and()->very_long()->chains()->question_mark()->exclamation_mark();

答案 4 :(得分:1)

此方法允许方法链接,例如:

$object->method1()->method2()->method3();

而不是:

$object->method1();
$object->method2();
$object->method3();

答案 5 :(得分:1)

$this通常会返回以允许方法链接...这是一个很好的链接:

http://www.talkphp.com/advanced-php-programming/1163-php5-method-chaining.html

答案 6 :(得分:1)

当从对象上下文中调用方法时,伪变量$ this可用。 $ this是对调用对象的引用(通常是方法所属的对象,但如果从辅助对象的上下文中静态调用该方法,则可能是另一个对象)。您可以从PHP函数返回任何您想要的内容。 必须是$ this。