我在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本身就是一个数据库包装类)。
然而,如果你想这样做,就把它作为一个例子,原因有几个:
- 更有意义的是,您可能需要多个数据库连接
- 它更容易使用
- 它使用较少的全局空间,这是邪恶的
- 这让我很开心
所以,是的,实例是可行的,尽管我只会在大多数任务中使用本机PDO。
数据库类的静态实例很方便,因为不必将对象作为参数传递到函数/方法中或调用global($db)
,只需调用$db = Database::instance()
,就可以访问singleton,而不用实例化新对象。
这取决于您希望应用程序如何工作。