Php 我可以不使用$GLOBALS或依赖项注入从另一个对象访问方法吗?
我的情况是这样的:我有一个用户类,它的函数有Php 我可以不使用$GLOBALS或依赖项注入从另一个对象访问方法吗?,php,oop,methods,Php,Oop,Methods,我的情况是这样的:我有一个用户类,它的函数有get\u friends\u list()和get\u last\u visit()。然后我有一个$db对象,它是一个数据库框架,它具有类似insert()和select()的函数 我不想使用依赖项注入的原因是,我的$db对象有一个查询计数器,它在每次执行查询时都会更新。依赖注入将创建一个新的$db对象,因此我无法跟踪这些内容,因为会有一个全新的对象 简言之,有没有办法做到这一点: class user{ public function ge
get\u friends\u list()
和get\u last\u visit()
。然后我有一个$db
对象,它是一个数据库框架,它具有类似insert()
和select()
的函数
我不想使用依赖项注入的原因是,我的$db
对象有一个查询计数器,它在每次执行查询时都会更新。依赖注入将创建一个新的$db
对象,因此我无法跟踪这些内容,因为会有一个全新的对象
简言之,有没有办法做到这一点:
class user{
public function get_last_visit(){
return $GLOBALS['db']->get(
'users',
'last_visit',
'username' => $this->username
);
}
}
但是如果不使用$GLOBALS变量,我听说这是一种糟糕的做法。依赖项注入不会创建新对象,除非您显式地克隆它(您不这样做)
基本上:使用依赖项注入依赖项注入不会创建新实例。请先了解它到底是什么,以及它是如何工作的,然后再对它做出广泛的声明。。。。你知道,你可以把实际的句柄传递给函数吗?你的意思是我可以把
function\uu构造($db){$this->db=$db;}
添加到我的用户类中,然后做$user=newuser($db)代码>,然后当我调用$user->get_friends_list()时
它将使用相同的$db
实例?这是我学到的新东西,我一直认为它会创建一个新实例。:)非常感谢。