PDO&自定义数据库包装类:静态还是实例?

时间:2012-07-12 15:35:49

标签: php mysql oop pdo

我在PHP中寻找一个好的PDO包装类;因为我所看到的那些课程中没有适合我的需求,所以我决定编写自己的课程,增强我之前编写的类,使用现在可怕的mysql_*函数来集成本机转义,db-agnosticity,编写陈述等等。

我想知道的一件事是,开发和使用这样的类的最佳方法是什么?一种替代方案是实例:

$db = new Database();
$db->query("SELECT this FROM that");

另一种是静态方法:

DB::query("SELECT foo FROM bar WHERE answer=42");

我见过一些喜欢使用第一种方法的框架(f.ex. Joomla API),但我不确定哪种框架可能是第二种方法可能存在的缺陷。

你有什么见解吗?

2 个答案:

答案 0 :(得分:5)

我个人认为不需要PDO包装类(PDO本身就是一个数据库包装类)。

但是,如果您希望这样做,请将其作为实例进行,原因如下:

  1. 更有意义,您可能需要多个数据库连接。
  2. 它更容易使用。
  3. 使用较少的全局空间 which is evil
  4. 这让我很开心。
  5. 所以是的,实例是要走的路,尽管我会在大多数任务中使用原生PDO。

答案 1 :(得分:-3)

数据库类的静态实例很方便,而不必将对象作为参数或调用global($db)传递给函数/方法,您只需调用$db = Database::instance()而不是实例化新对象你可以访问单身人士。

取决于您希望应用程序如何工作。