我创建了一个数据库类和一个数据库访问对象,这样我就可以实现一个值对象模式。
下面是数据库类的一部分和它的功能:
class Database {
protected $conn = null;
private $stmt;
// create a connection
public function __construct($dsn, $username, $passwd) {
try {
// mysql and pdo
$this->conn = new PDO($dsn, $username, $passwd);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
$this->get_error($e);
}
}
}
这个db类的一部分是我创建的函数num_rows
public function num_rows($query) {
$this->stmt = $this->conn->prepare($query);
if ($this->stmt) {
$this->stmt->execute();
return $this->stmt->rowCount();
}
}
我也有这个DAO类,它可以做你实际看到的事情。
class Dao {
protected $db = null;
public function __construct() {
$dbh = new Database('mysql:host=localhost;dbname=doorche', 'root', '');
$this->db = $dbh->getConnection();
}
//put your code here
}
当我在另一个类(例如loginDao
)中扩展DAO类时,我无法访问*num_rows*
为什么会这样?
您需要按如下inherit Dao
分类。
class Dao extends Database {
则在loginDao
。
class loginDao extends Dao {
现在loginDao
也可以访问Database
的方法