Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我可以不使用$GLOBALS或依赖项注入从另一个对象访问方法吗?_Php_Oop_Methods - Fatal编程技术网

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
实例?这是我学到的新东西,我一直认为它会创建一个新实例。:)非常感谢。