我抽象类数据库是数据库交互和这个类的任何孩子发(UserDatabase,ActionDatabase,EventDatabase)继承其定义为静态其数据库连接 。继承数据库连接
abstract class Database {
public static $connection;
public function __construct() {
...
$this->connection = mysql_connect($host, $username, $password);
}
}
class UserDatabase extends Database {
public function verify() {
if ($this->connection == parent::$connection) {
print "true";
} else {
print "false";
print "this:" . $this->connection . " parent:" . parent::$connection;
}
}
}
$instance = new UserDatabase();
$instance->verify();
// this prints false, as parent::$connection is empty
意思,我的数据库连接仅设置和存储在内存中一次并传递到子类中作为参考而不被复制为每个实例?
这是你如何实现你的OOP正确的数据库接口?
你是绝对正确的,我是想说明类尽可能短的目的,但我想我的PHP语法让我失望。 My ** User **实例是** UserDatabase **返回的内容。用户类只是系统在处理脚本时可能需要的值的setter/getter类。 当脚本完成时,它将User对象传递给当前的UserDatabase,因此它可以剥离User到值,然后将更新查询发送到数据库服务器。 因此,类的数据库继承链与它返回的类型是分开的。 ActionDatabase返回并接受Action的一个实例。 – sdkfasldf 2010-05-13 18:47:27