很多时候我听说要避免使用静态类,因为它们会插入使您的代码在其他项目中无法使用的依赖项,并且不允许对其进行单元测试。
假设我们有一个典型class DB
的访问数据库的类,如果这样的类是static
我们可以在代码中的任何位置调用它:
DB::execQuery(...);
但这会产生依赖关系,所以让我们让 DB 类不是静态的,在这种情况下,我们的代码中会有某处:
$db = new DB();
然后我们可以调用我们的代码
$db->execQuery(...);
但是现在在使用$db
inside a时function
,我们每次都需要先这样声明它
global $db;
有没有办法解决这个问题?
一种方法是将$db
对象注入到使用它的类中,但我必须将它注入到所有使用它的类中,这很荒谬,使用静态类会更快,编写的代码更少。我错过了什么吗?!