在函数中使用数据库对象


Using database objects in functions

在我正在构建的Web应用程序中,我使用PDO数据库对象来查询我的数据库。这是使用我基于PDO:构建的自定义类在每个页面的顶部实例化的

$db = new database; //database is the name of my class.

然后,我在脚本中这样使用类:

$db->query("SELECT field FROM table");
$results = $db->resultset();

我有许多独立的函数需要使用数据库对象。

我的问题是,如果$db是全局使用的变量,那么最好将$db作为自变量传递给函数,还是从函数内部全局化。然而,我听说过一些关于避免污染全局命名空间的事情。

function myFunction($db, $a1, $a2){
    //stuff
}

function myFunction($a1, $a2){
    global $db;
    //stuff
}

在我看来,全局变量很少是一种好的做法。我认为您应该使用第一个解决方案:将db实例作为第一个参数传递给您的函数。

如果您的database只有一个实例,那么更好的选择是将database类设为单例。这将允许您在函数中执行类似$db = database.getInstance();的操作。