PHP OOP 在函数中使用扩展 class
PHP OOP use extends class in functions
这是我当前的代码
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
class 中,我怎样才能使 $db = new Database;
在所有 public 函数中准备就绪,而不是必须添加 $db = new Database;
在每个函数中?
创建构造函数并私有属性$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 它可能会有所帮助。
因为您已经将数据库 Class 扩展到用户中,为什么要创建对象?
您可以直接访问数据库 Class
的函数(public 和受保护的)
您可以使用 $this
关键字直接访问它。
只有你必须在构造函数(父class)中建立连接,在子class中你必须调用父class构造函数。
<?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();
}
}
?>
这是我当前的代码
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
class 中,我怎样才能使 $db = new Database;
在所有 public 函数中准备就绪,而不是必须添加 $db = new Database;
在每个函数中?
创建构造函数并私有属性$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 它可能会有所帮助。
因为您已经将数据库 Class 扩展到用户中,为什么要创建对象? 您可以直接访问数据库 Class
的函数(public 和受保护的)您可以使用 $this
关键字直接访问它。
只有你必须在构造函数(父class)中建立连接,在子class中你必须调用父class构造函数。
<?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();
}
}
?>