作为实例属性的实例是否可以访问主实例的其他属性?

时间:2014-06-27 23:41:54

标签: php class oop

假设我有以下(PHP供参考)

myClassA{
    private $myClassB;
    private $myClassC;

    function __construct(){
        $this->myClassB = new myClassB();
        $this->myClassC = new myClassC();
    }
}

让我们说myClassB是一个数据库连接管理器,它将建立和关闭连接,但绝不会从连接中写入或读取。

我现在想用myClassC写入通过myClassB管理的数据库连接。我们假设myClassC有一个名为save_user()的函数可以保存用户数据。

save_user是否可以包含引用myClassBmyClassA实例的代码。例如,如果我知道myClassC只会在myClassA内创建而myClassA总是会有myClassB来管理其连接,那么我是否可以{ {1}}包含一行代码,例如

myClassC

我想我想知道//$this refers to myClassC $connection_to_write_to = $this->OBJECT_IM_INSIDE_OF->myClassB->db_connection_1->; 内的功能是否能够直接访问myClassC的属性,或者我是否必须

myClassA

访问我要在myClassC->myFunction(myClassA->property_I_want) 中使用的myClassA的属性。

1 个答案:

答案 0 :(得分:0)

ClassC定义中,您应该:

class ClassC {
    private parentClassB;

    function __construct($classB) {
        $this->parentClassB = $classB;
    }
    ...
}

然后你的ClassA构造函数看起来像:

function __construct(){
    $this->myClassB = new myClassB();
    $this->myClassC = new myClassC($this->myClassB);
}