在PHP中覆盖父级的父级构造函数

fre*_*ley 7 php constructor overriding

我有一个PHP类:

class DB extends mysqli{
    public function __construct(
      {
       parent::__construct('localhost','user','password','db');
      }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我想用一个新的类覆盖这个类,该类使用不同的db用户执行更多特权数据库操作.

class adminDB extends DB{
    public function __construct(
      {
       ??
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

roj*_*oca 11

您应该将凭据传递给构造函数:

class DB extends mysqli {
    public function __construct($host, $user, $password, $db)
    {
        parent::__construct($host, $user, $password, $db);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你不需要继承你可以使用:

$adminDb = new DB($adminHost, $adminUser, $adminPassword, $db);
$nonAdminDb = new DB($host, $user, $password, $db);
Run Code Online (Sandbox Code Playgroud)

但如果你真的想要继承,你仍然可以这样做:

class AdminDB extends DB {
    public function __construct() {
        parent::__construct('adminhost','adminuser','adminpassword','db');
    }
}
Run Code Online (Sandbox Code Playgroud)