朋友劝我: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
对象而不使其成为GLOBAL?还是我应该停下来听听我朋友的意见?
当然。只需为$db
对象创建一个属性,并通过构造函数(或创建一个setter方法)将其传递给对象A
:
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);
你是这个意思吗?