面向对象的php - 返回上一个对象

时间:2014-09-11 20:18:52

标签: php oop object

做过研究,找不到答案。

假设我有这两个类:

class foo {

 function create_boo() {
  $boo = new boo($this); // creates boo
  return $boo; // returns boo object
 }

 function a() {
  //Do something complex here in class foo
  return $this;
 }

 function b() {
  //Do something complex here in class foo
  return $this;
 }

 function c() {
  //Do something complex here in class foo
  return $this;
 }

}

class boo {

 private $prev;

 function boo ($prev) { // Constructor
  $this->prev = $prev; //In my theory, this saves the previous object, so I can return to it, but doesnt work.
  //do something
 }

 function a() {
  //Do something complex in class boo
  return $this;
 }

 function b() {
  //Do something complex in class boo
  return $this;
 }

 function c() {
  //Do something complex in class boo
  return $this;
 }

 function return_to_foo() {
  return $this->prev; // should return back to previous object?
 }
}

现在,让我解释一下我的问题和我想做的事情。我可以轻松创建类foo:

$foo = new foo();

我可以使用那里的功能

$foo->a()->c();

它现在使用函数a然后c。我可以把订单放在一起。让我们说我想在那里创建boo并使用函数。

$foo->create_boo()->b()->c();

所以,我创建了boo并使用那里的东西。但是现在让我说我想跳回到以前的树而不结束命令行并返回一个命令,所以它会开始使用foo命令吗?

$foo->create_boo()->b()->c()->return_to_foo(); //Next commands are from foo tree;

是否可能,如果是,我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

由于PHP 5构造函数必须命名为__construct()。因此,在您的示例中,永远不会调用方法boo,因此不会设置属性$prev。将您的方法boo更改为__construct,一切都应该没问题。

修改

文档说,为了向后兼容,它将搜索旧式构造函数。

http://php.net/manual/en/language.oop5.decon.php