【问题标题】:PHP - Should I create an artificial inheritance in DAO classes when I don't need them?PHP - 当我不需要它们时,我应该在 DAO 类中创建人工继承吗?
【发布时间】:2012-01-16 11:56:12
【问题描述】:

全部,

使用 PHP 构建一个小型 Web 应用程序。我没有太多的编程经验。

在我的应用程序中,我创建了一个类来访问我称之为DAO_DBrecords 的数据库记录。该类包括创建新记录、更新现有记录等的基本功能。目前,该类满足了我对所有数据库表的所有 DAO 需求。在函数中,我将代表数据库表的字符串(usersarticles 等)作为参数之一传递。

此时我可以做以下三件事:

  1. 无论我正在处理什么类型的记录(即表格),都可以在整个程序中使用这个类。
  2. 为每种类型的记录(例如,DAO_Users)创建特定的类,这些类继承自 DAO_DBrecords,但在其他方面为空。
  3. 为每种类型的记录(例如,DAO_Users)创建特定的类,这些类继承自 DAO_DBrecords,并指定该类可以通过变量访问的 DB 表(例如,private $table = 'users')。在父类中,变量将为 null 或空字符串。

同样,在这一点上,我并没有设想需要特定于表的函数(但这可能会改变)。

其中哪一个(如果有)是正确的方法?

谢谢,

JDelage

编辑:我已经编辑了之前阅读的选项 3:
3. 为每种类型的记录创建特定的类(例如,DAO_Users),这些类继承自DAO_DBrecords,并指定该类可以通过常量访问的数据库表(例如,const TABLE = 'users')。在父类中,该常量将为 null 或空字符串。

【问题讨论】:

    标签: php oop inheritance pdo


    【解决方案1】:

    我会选择第三个选项。在DAO_Users 中,您最终可以在用户记录本身上放置执行特定操作的方法(例如,创建和存储加盐密码、发送验证电子邮件、从数据库中以DAO_Users 集合的形式获取所有用户的朋友、获取所有用户的 cmets等)。

    通过这种方式,您既可以使用 DAO 模式,又可以按动作目标在类中组织所有应用“动作”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      相关资源
      最近更新 更多