我在一些库中看到过类似这样的东西:
$this->getResponse()->setRedirect($returnUrl);这个“多层调用”是如何完成的,或者,类应该如何构建才能做这样的事情?
我认为:
class greeting
{
public function hi()
{
public function howAreYou()
{
echo 'How are you?';
}
}
}
$greet = new greeting;
$greet->hi()->howAreYou();但我认为它不是很好,我最好使用像扩展这样的东西,但我不知道。感谢您的建议。
发布于 2012-04-30 19:26:41
如果这是一个调用自身的类实例,那么它被称为“方法链接”。
在PHP中,可以通过使用return $this来完成;请注意,这是一种与类继承非常不同的机制-将它们视为可互换并没有实际意义。
发布于 2012-04-30 19:26:27
getResponse()正在返回一个具有setRedirect()方法的类实例。
示例:
class Foo
{
public function getResponse()
{
$redirect = new Bar();
return $redirect;
}
}
class Bar
{
public function setRedirect($returnUrl)
{
// do something
}
}
$foo = new Foo();
$foo->getResponse()->setRedirect("returnUrl");发布于 2012-04-30 19:27:03
不是的。
你所要做的就是在每个函数的末尾返回self。
因此,您的示例应该是like>
class greeting
{
public function hi()
{
echo "Hi";
return $this;
}
public function howAreYou()
{
echo 'How are you?';
return $this;
}
}
$greet = new greeting;
$greet->hi()->howAreYou();或者甚至是:
$greet->hi()->howAreYou()->hi()->howAreYou();https://stackoverflow.com/questions/10382864
复制相似问题