以下是示例代码:
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;
}
}
答案 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;
}