使用一个可爱的对象到另一个对象没有使其全局



朋友劝我: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);

你是这个意思吗?

相关内容

  • 没有找到相关文章

最新更新