这是我当前的代码
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;
?
当您将数据库类扩展到用户时,为什么要创建对象?您可以直接访问数据库类的功能(公共和受保护)
您可以使用$this
关键字直接访问它。
只有你必须在构造函数(父类)中建立连接,而在子类中,你必须调用父类构造函数。
<?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();
}
}
?>
创建一个构造函数和私有属性$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 的新手 - 阅读这篇文章可能会有所帮助。