Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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 如何在其他类中运行数据库类方法?_Php_Class - Fatal编程技术网

Php 如何在其他类中运行数据库类方法?

Php 如何在其他类中运行数据库类方法?,php,class,Php,Class,我不熟悉在PHP中使用类,我刚刚意识到,在我的大多数类方法中,我需要做一些mysql查询。我有另一个类处理我的连接和查询,但是我应该如何从其他类调用该类呢?如果我的所有类都依赖于我的DB类,那么这种情况是否会违背使用类的目的呢?这通常通过单例模式或工厂模式来解决 当您需要使用db时,您抓取应用程序的db对象: $db = Site::getDb(); // singleton $db->exec('update t set i = i + 1'); getDb返回一个静态实例 或:

我不熟悉在PHP中使用类,我刚刚意识到,在我的大多数类方法中,我需要做一些mysql查询。我有另一个类处理我的连接和查询,但是我应该如何从其他类调用该类呢?如果我的所有类都依赖于我的DB类,那么这种情况是否会违背使用类的目的呢?

这通常通过单例模式或工厂模式来解决

当您需要使用db时,您抓取应用程序的db对象:

$db = Site::getDb();   // singleton
$db->exec('update t set i = i + 1');
getDb返回一个静态实例

或:


返回一个静态实例(如果存在),或者为该dsn创建一个新的db句柄…

这通常通过单例或工厂模式解决

当您需要使用db时,您抓取应用程序的db对象:

$db = Site::getDb();   // singleton
$db->exec('update t set i = i + 1');
getDb返回一个静态实例

或:


返回一个静态实例(如果存在),或者为该dsn创建一个新的db句柄…

一些示例代码将有助于说明您正在尝试执行的操作。一些示例代码将有助于说明您正在尝试执行的操作。+1,回答很好,但您的意思不是
db::getDb()
而不是
Site::getDb())
?很抱歉,我仍在学习这方面的知识,据我所知,连接部分使用singlton,如果as连接已被调用/建立,则它将使用该连接,否则它将创建一个新连接,对吗?所以我这里的主要问题是基于我到目前为止所拥有的,我有一个sessions类,它为我设置并获取会话变量,而不是使用PHP的默认设置和获取会话特性,我将它们包装在一个类中,这样我就可以改为使用任何类型的缓存系统。我还有一个数据库类,它将建立连接,并具有进行查询的方法。依我看来,我需要访问我所有其他类中的数据库和会话类,我只是想知道这是否正常?比如说,我决定建立一个不同的网站,如果我尝试使用“论坛”类,它将无法工作,除非我把我的数据库和会话类也带来。我认为这没关系,但我是一个完全的新手,有类和+1,回答很好,但你的意思不是说
Db::getDb()
而不是
Site::getDb()
?很抱歉,我还在学习这方面的知识,据我所知,连接部分使用了singlton,如果as连接已经被调用/建立,那么它将使用该连接,否则它将创建一个新的连接,对吗?所以我这里的主要问题是基于我到目前为止所拥有的,我有一个sessions类,它为我设置并获取会话变量,而不是使用PHP的默认设置和获取会话特性,我将它们包装在一个类中,这样我就可以改为使用任何类型的缓存系统。我还有一个数据库类,它将建立连接,并具有进行查询的方法。依我看来,我需要访问我所有其他类中的数据库和会话类,我只是想知道这是否正常?比如说,我决定建立一个不同的网站,如果我尝试使用“论坛”类,它将无法工作,除非我把我的数据库和会话类也带来。我想这没关系,但我是一个完全的新手