我有一个DB类,我在构造函数中调用mysqli connect,我想在另一个类中使用此连接。我怎么能这样做,我必须先在II级课程中重新初始化课程吗?或者我必须继承DB类到类2? 感谢任何指导。
提前致谢,
Sambhav
下面是两个类的粗略轮廓。
CLASS I - 数据库类
class Db {
private $dbHost = "";
private $dbUser = "";
private $dbPass = "";
private $dbDatabase = "";
function __construct() {
$mysqli = new mysqli($this->dbHost, $this->dbUser, $this->dbPass, $this->dbDatabase);
if ($mysqli->connect_errno) {
echo "Error in connecting to database" . $mysqli->connect_error;
}
//echo "connected to database";
}
}
第二类 - 尝试使用数据库连接的类
class MyClass {
private $details = array();
public function getDetails() {
$query = "SELECT `user` FROM `db`.`table`";
$result = $mysqli->query($query);
while ($row == $result->fetch_assoc()) {
//.........
}
return $details;
}
}
答案 0 :(得分:1)
您可以在尝试使用Db
的类中使用受保护的属性,例如;
class MyClass {
protected $objDb;
public function connectToDb() {
$this->objDb = new Db();
}
然后,在getDetails
方法中,使用$this->
“访问”Db
类。
$result = $this->objDb->query($query);
和用法;
$objMyClass = new MyClass();
$objMyClass->connectToDb();
$objMyClass->getDetails();
或者,您可以将connectToDb
方法放在__construct()
以下是完整代码:http://harrydenley.com/stackoverflow-25112589/(在我的服务器上测试过并且所有工作都已完成。我必须进行一些更改,您可以在帖子中看到)