【发布时间】:2012-07-12 09:55:17
【问题描述】:
我在 PHP 中寻找一个好的 PDO 包装类;由于在我所见的课程中没有一个课程适合我的需要,我决定编写自己的课程,增强我之前已经编写的课程,使用现在可怕的mysql_* 函数来集成本机转义、db-agnosticity、prepared statements 和以此类推。
我想知道的是,开发和使用这样的类的最佳方法是什么?一种选择是通过实例:
$db = new Database();
$db->query("SELECT this FROM that");
另一个是静态方法:
DB::query("SELECT foo FROM bar WHERE answer=42");
我看到一些框架(例如 Joomla API)更喜欢使用第一种方法,但我不确定第二种方法可能存在哪些缺陷。
你有什么见解吗?
【问题讨论】:
-
如果你不为此使用静态上下文,那么单元测试的生活会更轻松,所以我建议使用第一种方法。但是我什至建议使用像 Doctrine2 这样的 ORM。
-
第一个通常是首选,因为 1) 静态很难进行单元测试,2) 有可能连接到两个不同的数据库,虽然这种情况很少见,但它可能会发生,并且是最好的处理方式那只是有两个不同的数据库实例。
-
使用静态方法,您必须创建一堆方法来映射所有 PDO 方法。使用您不使用的实例,您将获得更好的 IDE 支持。
-
@bcmcfc - 有什么证据表明您获得了更好的 IDE 支持,或者它来自您的头脑?
-
来吧。这些问题中的另一个?那里有大量关于设计和实例与静态的信息。去阅读,你的决定会为你做出......