我一直在努力学习如何在MVC结构中使用php类进行数据库操作。这是一个连接数据库的简单数据库类。
<?php
class Database
{
private $connect;
private $host, $username, $password, $databaseName;
public function __construct($host, $username, $password, $databaseName)
{
$this->host = $host;
$this->username = $username;
$this->password = $password;
$this->databaseName = $databaseName;
$this->connect = new mysqli($this->host, $this->username, $this->password, $this->databaseName);
if ($this->connect->connect_error) {
die('Connect Error (' . $this->connect->connect_errno . ') '. $this->connect->connect_error);
}
return true;
}
public function __destruct()
{
$this->connect->close();
}
}
实例化连接类
$db = new Database("localhost", "root", "", "framework");
直到这里,如果出现错误,它会连接并显示和错误。
现在我在数据库中有一个表'Members',其中包含三列1. Id,2。Name和3. Email并在members表中显示记录 我在模型文件夹(MVC)中有一个成员模型文件。我试图像这样扩展Database类
class Members extends Database {
public function getMembers() {
$result = $this->connect->query("SELECT * FROM members");
return $query->row;
}
}
我无法做的事(过去24小时)显示结果。
P.S。即使你可以建议我如何扩展数据库类的教程,也会很棒。
答案 0 :(得分:0)
1)。子类无法直接访问其父私有属性,因此您需要 public 修饰符方法从其任何子类访问其属性
public function getConnect(){
return $this->connect;
}
public function getUsername(){
return $this->username;
}
public function getPassword(){
return $this->password;
}
public function getDatabaseName(){
return $this->databaseName;
}
2).Parent有一个构造函数来初始化这些$host
,$username, $password
,$databaseName
因此子构造函数必须引用它自己的父构造函数构造
在继承中,我们不直接实例化父类,而是通过扩展它的类初始化其父属性(所以$host
,$username
,{{ 1}},$password
通过子类初始化)。如果你仍然直接实例化父类,那么再也没有必要使用继承了。
$databaseName