我有2个类,它们都扩展了一个抽象类。这两个类都有一个名为“content”的私有方法,它是另一个类的项目数组。 一旦我将对象B添加到类A的“content”数组中,我需要从项目对象B中获取父对象A. 这是一个例子,它更容易看到它:
<?php
abstract class heroes {
private $tag;
private $content = array();
function __construct($tag) {
$this->tag = $tag;
}
public function getContents() {
return $this->content;
}
protected function addContent($obj) {
$this->content[] = $obj;
return $obj;
}
}
final class batman extends heroes {
public function addPartner() {
return $this->addContent(new robin());
}
}
final class robin extends heroes {
private $capes;
public function dieAtFirstFight() {
return BATMAN OBJ???
}
}
$batman = new batman();
$batman = $batman->addPartner()->dieAtFirstFight();
?>
我在抽象类中尝试添加一个名为$ father的私有方法,其中每次我添加一个伙伴我设置$ self(这是蝙蝠侠对象)但在php错误日志中我得到错误“类Batman可以对象不能转换为字符串“
答案 0 :(得分:1)
你必须使用&#34; $ this&#34;添加父亲。 php中没有$ self。
<?php
abstract class heroes {
private $tag;
private $content = array();
protected $father;
function __construct($tag) {
$this->tag = $tag;
}
public function getContents() {
return $this->content;
}
protected function addContent($obj) {
$this->content[] = $obj;
$obj->setFather($this);
return $obj;
}
protected function setFather($father) {
$this->father = $father;
}
}
final class batman extends heroes {
public function addPartner() {
return $this->addContent(new robin('tag'));
}
}
final class robin extends heroes {
private $capes;
public function dieAtFirstFight() {
return $this->father;
}
}
$batman = new batman('tag');
$batman = $batman->addPartner()->dieAtFirstFight();
?>
&#13;