【发布时间】:2014-11-20 00:12:01
【问题描述】:
我了解在 Java 中不使用静态的原因。
但是,我目前正在用 PHP 开发 OO 代码。我使用 DAO 的目的是将我的查询保存在一个地方,以便我可以轻松找到它们。我还实例化了一些 DAO,因此我可以将分页合并到一些(相关)查询中。在许多情况下,这不是必需的,因此我倾向于以以下形式创建静态方法(尽管从技术上讲,我认为我不能称其为 DAO):
$info = schemeDAO::someFunction($variable);
在页面刷新期间我可能只需要那个方法(即头文件中的特定值)。
在创建和销毁对象时,我可能需要实例化同一个 DAO 一百次。
$dao = new myDao();
$info = $dao->someFunction($variable);
无论如何,在我看来,至少在 PHP 中,简单地加载一个静态变量并将其保存在内存中不是更高效吗?
【问题讨论】:
-
静态在Java中不好的原因是什么?在您看来,为什么同样的原因不适用于 PHP?为什么需要“将同一个 DAO 实例化一百次”?为什么你认为静力学效率更高?你认为这里的记忆是什么?
-
AFAIK 对象实际上比静态类更快。虽然不应该有破坏和创造的理由......
-
OO 方法、测试、应用程序内存等。“你认为这里的内存是什么?”我的假设,蓝图,班级结构。不需要访问静态函数类实例化。要访问方法,必须完整创建该类型的对象。由于 GC 将删除在停止引用时创建的任何 DAO 对象,如果另一个类使用相同的 dao 在其他地方再次实例化,在我看来,由于必须再次创建对象,因此会产生额外的开销?因此这个问题...... user247245 的链接给了我我想要的信息。谢谢
-
当然,如果您不断地创建对象并让它们超出范围,那么重新创建它们显然会产生开销。但是,为什么不将对象实例化一次,然后将它们传递给所有使用它们的方法呢?见How Not To Kill Your Testability Using Statics。
标签: php static-methods php-dao