Php 数据库类,数据访问对象可以';t使用数据库类的方法

Php 数据库类,数据访问对象可以';t使用数据库类的方法,php,database,function,database-connection,Php,Database,Function,Database Connection,我创建了数据库类和数据库访问对象,以便以某种方式实现值对象模式 下面是数据库类的某些部分及其功能: class Database { protected $conn = null; private $stmt; // create a connection public function __construct($dsn, $username, $passwd) { try { // mysql and pdo

我创建了数据库类和数据库访问对象,以便以某种方式实现值对象模式

下面是数据库类的某些部分及其功能:

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\u 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
}
当我在另一个类中扩展DAO类时,例如a
loginDao
我无法访问*num\u行*


为什么会发生这种情况?

您需要继承Dao类,如下所示

class Dao extends Database {
然后在
loginDao

class loginDao extends Dao {

现在
loginDao
也可以访问
数据库
方法,因为Dao没有扩展数据库类。.调用
parent::\uu construct()loginDao
constructori中调用了父::u construct(),但它不起作用..我真的需要在DAO中扩展数据库类吗?还是不?我已经实例化了它。@Joey Salachipolito我看不到你扩展了它…你有
类Dao{
在你的问题中…@Joey Salachipolito你在
Dao构造中所做的事情
方法是创建数据库的对象。是的,我创建了一个对象并使用它来获得连接。如果我已经创建了对象,我看不到扩展它的理由,另一件事是我尝试了你所说的,但失败并抛出了相同的error@JoeySalacHipolito这是正确的,所以创建全局对象,这样Dao子类也可以访问它。。