从函数返回数据库连接

鳟鱼

我试图从函数返回$ db连接,以便可以在另一个函数中使用它。但是有人函数不理解$ db变量。

function dbConnection(){
   $dbhost = 'localhost';
   $dbuser = '...';
   $dbpass = '...';
   $dbname = '...';

   try {
     $db = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=UTF8", $dbuser, $dbpass);
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     return $db;
   } catch (PDOException $e){
     echo 'Connection failed: ' . $e->getMessage();
   }
}

然后在我的所有功能中使用它。

function getCurrentFile(){
   dbConnection();

   $stmt = $db->prepare(...);
   $stmt->execute();

}

有没有更好的方法来处理数据库连接?我以前每次都需要require_once config.php(其中只有数据库连接)文件,但是我不想再这样做了。

威讯

选项之一是定义提供数据库对象的单调类:

// File: DbConection.php

class DbConnection
{

    /**
     * @var \PDO
     */
    private static $pdo;


    private function __constructor()
    {

    }

    public static function getInstance()
    {
        if(null === self::$pdo) {
            self::$pdo = new \PDO('....);
        }

        return $self::pdo;
    }

    private function __clone()
    {

    }

    private function __wakeup()
    {

    }
}

如果您使用的是composer工具,请将此行添加到composer.json文件:

"autoload": {
    "classmap": [
        "path_to_your_file/DbConnection.php"
    ]
},

在您的项目中,包含由composer vendor / autoload.php文件生成的引导程序,并通过以下方式开始使用类:

use DbConnection;

DbConnection::getInstance();

总体而言。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章