Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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 db连接变量,在多个位置访问的最佳方式_Php - Fatal编程技术网

PHP db连接变量,在多个位置访问的最佳方式

PHP db连接变量,在多个位置访问的最佳方式,php,Php,好吧,现在流行的说法是全局变量是坏的 好吧,如果我有: $dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME); 然后我有几个函数,这些函数都依赖于db连接,在我所有的函数中,访问$dbc最合理的方法是什么 在这种情况下,全球化是可以的吗?在每个函数中将其声明为全局变量似乎是多余的 解决这个问题的最佳方法是什么 在这种情况下,全局变量不会成为问题 另一种解决方法是编写一个存储这些变量的数据库类。这样做的好处是,如果您觉得需要切换到一

好吧,现在流行的说法是全局变量是坏的

好吧,如果我有:

$dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
然后我有几个函数,这些函数都依赖于db连接,在我所有的函数中,访问$dbc最合理的方法是什么

在这种情况下,全球化是可以的吗?在每个函数中将其声明为全局变量似乎是多余的


解决这个问题的最佳方法是什么

在这种情况下,全局变量不会成为问题

另一种解决方法是编写一个存储这些变量的数据库类。这样做的好处是,如果您觉得需要切换到一个新的数据库处理程序,比如PDO,那么这将是一个相当简单的任务

<?php
class Database
{
    private $host;
    private $user;
    private $password;
    private $dbname;

    public function __construct()
    {
        $this->host = '';
        $this->dbname = '';
        $this->user = '';
        $this->password = '';
    }

    public function connect()   {
        return mysqli_connect($this->host, $this->user, $this->password, $this->dbname);
    }
}
?>

将来,您可以轻松地:

  • 切换到PDO而不用担心大规模重构
  • 您可以将连接详细信息注入构造函数
  • 使用单例模式存储连接

在这种情况下,全局变量不会成为问题

另一种解决方法是编写一个存储这些变量的数据库类。这样做的好处是,如果您觉得需要切换到一个新的数据库处理程序,比如PDO,那么这将是一个相当简单的任务

<?php
class Database
{
    private $host;
    private $user;
    private $password;
    private $dbname;

    public function __construct()
    {
        $this->host = '';
        $this->dbname = '';
        $this->user = '';
        $this->password = '';
    }

    public function connect()   {
        return mysqli_connect($this->host, $this->user, $this->password, $this->dbname);
    }
}
?>

将来,您可以轻松地:

  • 切换到PDO而不用担心大规模重构
  • 您可以将连接详细信息注入构造函数
  • 使用单例模式存储连接

非常感谢。刚刚开始处理类和对象,所以我很欣赏这个例子。非常感谢。刚刚开始处理类和对象,所以我很欣赏这个例子。