遍历父::子关系的php oop
我的实际代码很复杂,因此这里有一个简单但相关的说明:遍历父::子关系的php oop,php,oop,scope,Php,Oop,Scope,我的实际代码很复杂,因此这里有一个简单但相关的说明: class base { var $child1; var $child2; function xcv() { $this->child1 = new objChild1(); $this->child2 = new objChild2(); } } class objChild1 { var $fruit = "apple"; } class objChild2 { functio
class base {
var $child1;
var $child2;
function xcv() {
$this->child1 = new objChild1();
$this->child2 = new objChild2();
}
}
class objChild1 {
var $fruit = "apple";
}
class objChild2 {
function getChild1Fruit() {
echo parent::child1->fruit;
}
}
相当直截了当,但是如果objGrandchild1想给child2打电话呢。。。它是否像parent::parent::child1->fruit
在此领域的任何提示都将不胜感激
======编辑=====
抱歉,我刚刚意识到父级属于扩展的使用,因此可能与之无关您在所做的编辑中做对了。一个对象没有在中使用的对象的实现。不过,您可以通过参数获得此引用
class base {
var $child1;
var $child2;
function xcv() {
$this->child1 = new objChild1();
$this->child2 = new objChild2($this);
}
}
class objChild1 {
var $fruit = "apple";
}
class objChild2 {
objChild2($parent) {
$this->parent = $parent;
}
function getChild1Fruit() {
echo $this->parent->child1->fruit;
}
}
你做的编辑是对的。一个对象没有在中使用的对象的实现。不过,您可以通过参数获得此引用
class base {
var $child1;
var $child2;
function xcv() {
$this->child1 = new objChild1();
$this->child2 = new objChild2($this);
}
}
class objChild1 {
var $fruit = "apple";
}
class objChild2 {
objChild2($parent) {
$this->parent = $parent;
}
function getChild1Fruit() {
echo $this->parent->child1->fruit;
}
}
是的,这正是我所追求的,尽管我必须大幅修改代码以适应$this参数。我想这对孙子孙女也同样有效$这个->父->父->子->水果。我在想,如果沿着这条路走下去,我可能会失去真正的OOP。也许我应该把$FROUT作为一个var传递给OBJCHILD2,这同样有效,是的。我不确定您的代码结构,但从我在示例中看到的情况来看,
extends
的使用将提供一个比传递变量更好的环境。是的,这正是我所追求的,尽管我必须大幅修改代码以适应$this参数。我想这对孙子孙女也同样有效$这个->父->父->子->水果。我在想,如果沿着这条路走下去,我可能会失去真正的OOP。也许我应该把$FROUT作为一个var传递给OBJCHILD2,这同样有效,是的。我不确定您的代码结构,但是从我在示例中看到的情况来看,extends
的使用将提供比传递变量更好的环境。