我的朋友告诉我:Jesus, man! Don't use GLOBALs. It makes your software slow.
这是我的方式:
// Database class
class DB extends mysqli { ... }
// create Database object
$db = new DB(...)
// My class
class A {
function foo(){
global $db; ## PROBLEM IS HERE
$db->get_all(...);
}
}
有没有办法使用$db
对象而不使其成为全球?还是我应该停下来听听我的朋友?
答案 0 :(得分:1)
不确定。只需为$db
对象创建一个属性,并通过构造函数将其传递给对象A
(或创建一个setter方法):
class A
{
protected $db;
public function __construct($db)
{
$this->db = $db;
}
function foo()
{
$this->db->get_all(...);
}
}
// create your objects. inject the DB object into object A
$db = new DB();
$a = new A($db);
这是你的意思吗?