在PHP中,DAO对象比静态DAO类更好吗?

时间:2014-09-25 09:20:16

标签: php static-methods php-dao

我理解在Java中不使用静态的原因。

但是,我目前正在用PHP开发OO代码。我使用DAO的目的是将查询保存在一个地方,以便我可以轻松找到它们。我还实例化了一些DAO,因此我可以在一些(相关的)查询中加入分页。在许多情况下,它没有必要,所以我倾向于创建静态方法(尽管技术上我不认为我可以称之为DAO):

$info = schemeDAO::someFunction($variable);

在页面刷新期间我可能只需要那种方法(即头文件中的特定值)。

我可能需要在创建和销毁对象时将实例化相同的DAO一百次。

 $dao = new myDao();
 $info = $dao->someFunction($variable);

无论哪种方式,在我看来,至少在PHP中,简单地加载静态并将其保存在内存中会不会提高性能效率?

1 个答案:

答案 0 :(得分:0)

虽然静态访问是可以接受的(在一定程度上),但是使用动态方法,您可以通过依赖关系将对象传递给第三方对象(否则,传递调用也必须从原始类),不需要将其推送一些数据,而是依赖项可以在单个方法中多次决定并提取所需的数据/方法。否则,它只能返回(虽然可以调用实例),但不能从数据中分离包装方法逻辑。实例内联代码似乎更短,并且当您删除实例时,此时所有调用都会抱怨,而静态类继续保持代码中未被注意的状态,因为它们不需要实例化先决条件。 静态类将其状态保留在各种对象和方法上下文之间,因此不会像“新构造”那样自动“重置”。实例鼓励使用更透明的纯函数方法-传递参数。传递对象时,不会将服务逻辑与其数据结构分开,而仅传递数组数据结构时,执行逻辑会在传递过程中丢失或分离到另一个位置,并且在以下情况下最终必须被透明地静态地调用:通过-纯函数概念。

我将比较爱因斯坦与牛顿方程。在某些情况下,它们看起来完全相同。但是,要使内容漂亮,我将使用功能更广泛的实例或服务定位器单例,而不是静态类。另一方面,“通用性”较差的静态类最初可能更易于实现,特别是如果您不打算像使用实例那样在太空轨道上尽可能不使用它们,那么尤其如此。与使用私有属性类似,您可以指示它们未传递到任何地方,即纯函数,尽管它很少会表明是不好的,可以从任何地方调用。