Php 如何在类内部链接?
我想知道我们是否可以在类本身内部链接?比如说我有这两门课, 头等舱Php 如何在类内部链接?,php,fluent-interface,Php,Fluent Interface,我想知道我们是否可以在类本身内部链接?比如说我有这两门课, 头等舱 class Object1 { public $item; public $obj2; public function __construct() { $this->obj2 = new Object2(); } public function chain1() { $this->item = 'Chain1 ';
class Object1
{
public $item;
public $obj2;
public function __construct()
{
$this->obj2 = new Object2();
}
public function chain1()
{
$this->item = 'Chain1 ';
return $this;
}
public function chain2()
{
//$this->item = $this->obj2->chain3(); // works ok.
$this->item = $this->obj2->chain3()->chain1(); // how to chain yourself?
return $this;
}
}
二等舱
class Object2
{
public $item;
public function chain3()
{
$this->item = 'Chain 3 ';
return $this;
}
public function chain4()
{
$this->item = 'Chain4 ';
return $this;
}
}
$obj1 = new Object1();
print_r($obj1->chain2()->item);
错误
atal error: Call to undefined method Object2::chain1() in C:...
我需要在类Ojbect1()
本身中链接chain1()
$this->item = $this->obj2->chain3()->chain1();
有可能吗?您可以通过从中返回
$this
来链接方法:
class foo
{
public $foo;
public function yayThisChains()
{
return $this->chain()->chain2()->doIt();
}
private function doIt()
{
$this->foo = 'bar';
return $this;
}
private function chain2() { return $this; }
private function chain() { return $this; }
}
$foo = new foo();
echo $foo->yayThisChains()->foo;
问题是您试图使用相同的$this
链接两个不同的对象。您可以扩展类,以便$this
引用相同的类,而不是通过构造函数在object1
中构建object2
:
class Object2 extends Object1
不,这是不可能的,也没有意义。你会得到什么?请不要告诉我“在编辑器中看起来会更酷”;那么,你怎么能期望它调用Object1类中的方法呢?@PeeHaa fix'd。仅仅两年后。