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类时,例如aloginDao
我无法访问*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子类也可以访问它。。