我有一个数据库类,用于进行选择,更新,删除MySQL查询.
现在,我想创建另一个类中的MySQL查询,但如果我定义$db = new DB();的index.php,我不能使用$db另一个类变种.$db如果我想进行查询,是否必须一遍又一遍地定义变量?或者有没有办法$db使用对象全局var 来创建var?
Gor*_*don 11
最干净的方法是通过注入数据库类来聚合数据库类.所有其他方法,比如使用关键字或使用方法,更不用说Singleton,正在引入类和全局范围之间的紧密耦合,这使得应用程序更难以测试和维护.做就是了globalstatic
// index.php
$db = new DBClass; // create your DB instance
$foo = new SomeClassUsingDb($db); // inject to using class
Run Code Online (Sandbox Code Playgroud)
和
class SomeClassUsingDb
{
protected $db;
public function __construct($db)
{
$this->db = $db;
}
}
Run Code Online (Sandbox Code Playgroud)
如果需要依赖关系来为实例创建有效状态,请使用构造函数注入.如果依赖项是可选的或者需要在运行时可以互换,请使用Setter Injection,例如
class SomeClassUsingDb
{
protected $db;
public function setDb($db)
{
$this->db = $db;
}
}
Run Code Online (Sandbox Code Playgroud)
在你的index.php文件中使用
require_once('path_to_file_with_class.php');
Run Code Online (Sandbox Code Playgroud)
您还可以使用include_once,如果“path_to_file_with_class.php”文件不可用,它会向您发出警告而不是错误。