如何从父类中获取数据(不扩展)

时间:2014-10-24 11:27:50

标签: php

以下是示例代码:

namespace myApp

class app
{
    private $pdo = null;

    public function __construct() {
        $this->user=new User();
        $this->user->getPDO();
    }
}

class User
{
    public function getPDO() {
        //get PDO from app class
    }
}

User class如何从app类获取$pdo? 由于app类中的构造,无法使用extends。 我不想声明独立的类(app和User),而是使用global来相互通信。

编辑: 这个解决方案好吗? 命名空间myApp

class app
{
    public $pdo = null;

    public function __construct() {
        $this->user=new User($this);
        $this->user->getPDO();
    }
}

class User
{
    private $app=null;

    public function __construct($app) {
        $this->app=$app;
    }
    public function getPDO() {
        return $this->app->pdo;
    }
}

2 个答案:

答案 0 :(得分:2)

这听起来像是依赖注入的好选择。

您可以为Userclass声明构造函数,例如

__constuct($pdo) {
  $this->pdo = $pdo;
}

然后像

一样创建用户
$this->user = new User($this->pdo)

这样做的另一个好处是,当您想要测试代码时,您可以轻松地模拟pdo和测试用户,而无需执行实际的数据库操作。

答案 1 :(得分:0)

您必须在app类中声明2个函数,如下所示:

然后你可以通过这个函数访问pdo变量

public function setPDO($pdo) {
    $this->pdo = $pdo;
}

public function getPDO() {
    return $this->pdo;
}