【问题标题】:PHP - OOP - Storing big objects to be saved in session [closed]PHP - OOP - 存储要保存在会话中的大对象[关闭]
【发布时间】:2010-12-19 21:25:23
【问题描述】:

我正在尝试为我的 Web 应用程序设置一个新类,从原始程序编程开始重写我的代码。 由于我需要使用许多不同(复杂)查询来填充我的对象,并且该对象将存储在会话中,因此我决定创建另一个包含所有长查询的静态类。

在同一个类中将函数定义为“静态”而不创建新函数是否更方便?我的目标是尽可能让物体更轻...thanx

【问题讨论】:

  • 是我还是这没有意义?请更具体。
  • 你在制作什么相当于“上帝”的东西。如果是这样,您不妨重新考虑。

标签: php session object static


【解决方案1】:

我认为我的问题可以重写为: 是在会话变量中保存的序列化子对象中复制的静态函数(及其所有成员)吗?我认为只有在对象中找到非静态成员时才有意义...

【讨论】:

    【解决方案2】:

    听起来您可能正在将数据库访问的功能与业务逻辑类结合起来。

    当不使用 ORM 层并使用较小的应用程序时,我通常会创建一个单独的类来负责与数据库的所有交互。此类将包含可重用的查询位,由该类中的方法调用。我将这些位声明为私有静态属性。此类不存储任何数据。相反,它只是将数据传递给调用脚本或类。为了减少内存消耗,我使用单例模式来实现这个类,以确保任何需要使用这个类的脚本都使用该类的同一个实例,并且不会分配额外的内存。由于该类不用于存储全局数据,因此避免了在这种情况下使用单例的危险。

    另外,我建议您不要太担心内存消耗,除非您使用有限的硬件资源和/或访问量很大的网站。

    【讨论】:

    • 好的.. 你已经集中了我的问题并回答了我的问题。非常感谢
    【解决方案3】:

    尝试考虑到您的数据库中的每个表都是一个类并在 php.ini 中描述它。因此,propaply 类将具有一些用于保存、读取、更新的方法,以及一些用于检索该类对象数组的静态方法。

    【讨论】:

    • 如果使用这种方法,我强烈建议使用第三方 ORM 框架,例如 Doctrine 或 Propel。
    【解决方案4】:

    您应该将问题域分解为尽可能小的部分,并相应地创建类。不是一个应该处理所有问题的“大”类。

    每个班级都处理您要解决的整体问题的一个特定部分。

    我认为您会发现这是解决问题的一种更简单的方法。

    托尼

    【讨论】:

      猜你喜欢
      • 2017-12-06
      • 2012-01-26
      • 1970-01-01
      • 2017-05-24
      • 2019-02-24
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      相关资源
      最近更新 更多