这是我当前的代码
class Database {
//Connect to database here...
}
class User extends Database {
public function GetUInfo($id) {
$db = new Database;
$db->query("SELECT `id` FROM `users` WHERE `id`=:id");
$db->bind(":id", $id);
return $db->single();
}
public function uptime($id) {
$db = new Database;
$db->query("UPDATE `users` SET `time`=".$_SERVER['REQUEST_TIME']." WHERE `id`=:id");
$db->bind(":id", $id);
return $db->execute();
}
}
在User
课程中,如何才能使$db = new Database;
在所有公共函数中都准备就绪,而不必在每个函数中添加$db = new Database;
?< / p>
答案 0 :(得分:2)
创建构造函数和私有属性$db
private $db;
public function __construct() {
$this->db = new Database();
}
所以你可以像这样使用它
public function uptime($id) {
$this->db->query("UPDATE `users` SET `time`=".$_SERVER['REQUEST_TIME']." WHERE `id`=:id");
$this->db->bind(":id", $id);
return $this->db->execute();
}
正如mTorres
所提到的,这样做更好
public function __construct(Database $db) { $this->db = $db; }
如果您不熟悉OOP - read this article,那可能有所帮助。
答案 1 :(得分:2)
您已将Database Class扩展到User中,为什么要创建对象? 您可以直接访问数据库类的功能(公共和受保护的)
您可以使用$this
关键字直接访问它。
只有你必须在Constructor(父类)和子类中建立连接,你必须调用父类构造函数。
<?php
class Database
{
protected $db;
public function __construct()
{
//your connection code
}
}
class User extends Database
{
public function __construct()
{
parent::__construct();
}
public function GetUInfo($id)
{
$this->query("SELECT `id` FROM `users` WHERE `id`=:id");
$this->bind(":id", $id);
return $this->single();
}
public function uptime($id)
{
$this->query("UPDATE `users` SET `time`=".$_SERVER['REQUEST_TIME']." WHERE `id`=:id");
$this->bind(":id", $id);
return $this->execute();
}
}
?>