我有一个包含许多类的PHP项目,以及一个我从网上下载的PDO Wrapper类似乎相当不错:
http://code.google.com/p/php-pdo-wrapper-class/
我的课程现在看起来像这样:
class product {
__constructor($id = 0) {
//mysql_query and store the product row in $this->row;
}
edit($array) {
//another obvious mysql_query...
}
所以它们非常简单,我想将所有mysql_query都移到PDO以确保安全性。我有变量:
$db = new pdo('localhost', 'user', 'pass');
在我的包含文件的第一行中正确定义,在类之前。但是,我不想写:
global $db;
每个功能的开头。我考虑将__construct()函数更改为更像:
__construct($id = 0, $db = null) {
$this->db = $db;
}
然后从那里引用,但问题是我必须更改整个网站中的每个构造函数。有没有办法解决这个问题,这样我就可以编辑现有代码的最小数量?
答案 0 :(得分:2)
使所有模型类继承自基类模型,然后在基类中定义静态变量$db
,并在继承的类中使用它。
class BaseModel {
public static $db = NULL;
}
class UserModel extends BaseModel {
public function create() {
echo "Use the static variable: " . static::$db . "\n";
}
}
BaseModel::$db = "new PDO object";
UserModel::create();
输出
Use the static variable: new PDO object
答案 1 :(得分:0)
如你所说,有一个PDO类,所以在其他所有类中,你可以轻松地创建一个PDO类的实例。 首先在您需要的任何地方包括PDO课程
require_once'/PDOclass.php';
然后制作实例
$a=new PDAclass;
答案 2 :(得分:0)
你说$ db是在你的包含文件中定义的。所以只需包含该文件即可访问该参数。