PDO&;自定义数据库包装类:静态或实例


PDO & custom Database wrapper class: static or instance?

我在PHP中寻找一个好的PDO包装类;由于这些类中没有一个适合我的需求,我决定编写自己的类,增强了我之前已经编写的类,该类使用了现在可怕的mysql_*函数来集成本机转义、数据库不可知性、准备好的语句等等

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

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

另一种是使用静态方法:

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

我看到一些框架(f.ex.Joomlaneneneba API)更喜欢使用第一种方法,但我不确定哪种方法可能是第二种方法的陷阱。

你有什么见解吗?

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

然而,如果你想这样做,就把它作为一个例子,原因有几个:

  1. 更有意义的是,您可能需要多个数据库连接
  2. 它更容易使用
  3. 它使用较少的全局空间,这是邪恶的
  4. 这让我很开心

所以,是的,实例是可行的,尽管我只会在大多数任务中使用本机PDO。

数据库类的静态实例很方便,因为不必将对象作为参数传递到函数/方法中或调用global($db),只需调用$db = Database::instance(),就可以访问singleton,而不用实例化新对象。

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