在函数中使用数据库对象

时间:2013-07-25 10:40:04

标签: php function global-variables

在我正在构建的webapp中,我使用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
}

VS

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

1 个答案:

答案 0 :(得分:0)

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

如果您只有database的一个实例,则更好的选择是让您的database课程成为单身人士。 这样您就可以在函数中执行$db = database.getInstance();之类的操作。