在我正在构建的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();
的操作。