Php 我应该如何设计这个注册系统?

Php 我应该如何设计这个注册系统?,php,Php,背景 我工作的公司为两种不同的医学领域执照考试提供复习课程。对于每门课程,CourseA和CourseB,我们都提供一个实时、面对面版本和一个在线版本 我们不使用电子商务软件包,因为我们的产品工作方式非常专业,使用现有的软件包是不可行的,而且会有点过头 该系统最初构建时并不打算让一个人注册我们课程的多个版本。然而,我们发现他们中的很多人想要一起购买在线版和在线版。为了促进这一点,我们正在实施一个折扣/套餐系统,为客户购买这两种产品提供折扣。大多数独特的东西在注册现有客户时比注册新客户时发挥的作用

背景

我工作的公司为两种不同的医学领域执照考试提供复习课程。对于每门课程,CourseA和CourseB,我们都提供一个实时、面对面版本和一个在线版本

我们不使用电子商务软件包,因为我们的产品工作方式非常专业,使用现有的软件包是不可行的,而且会有点过头

该系统最初构建时并不打算让一个人注册我们课程的多个版本。然而,我们发现他们中的很多人想要一起购买在线版和在线版。为了促进这一点,我们正在实施一个折扣/套餐系统,为客户购买这两种产品提供折扣。大多数独特的东西在注册现有客户时比注册新客户时发挥的作用更大

目前,系统如下所示:

abstract class Registration{}
class CourseALiveRegistration extends Registration{}
class CourseAOnlineRegistration extends Registration{}
class CourseBLiveRegistration extends CourseALiveRegistration{}
class CourseBOnlineRegistration extends CourseAOnlineRegistration{}
CourseB类扩展了等效的CourseA类,因为它们的每一个要求都是相同的,但价格、订阅长度和其他一些数据值都会因注册是CourseA还是CourseB而有所不同,例如,CourseA可以在1年内访问某些内容,而CourseB只能在6个月内访问相同的内容

现在,注册过程使用其中一个注册类来完成其工作。我想要的是关于如何构建这个系统的一些建议,例如,如果我同时注册在线和在线版本的CourseA,我将获得折扣

我很乐意根据需要添加更多的代码,但我不想给你们带来太多的信息

更新
为了回答为什么会如此复杂的问题,每种类型的注册CourseALive、CourseAOnline、CourseBLive和CourseBOnline都有不同的规则来控制它们。如果唯一的区别是实际的东西,如成本,那么是的一个是有意义的。然而,每一个都有一些与之相关联的独特业务逻辑。例如,如果客户已经购买了CourseBLive,他们可以购买CourseALive进行折扣CourseB是一种较低级别的许可证考试。

这似乎是我需要在数据库中跟踪的内容,无论它是在线的还是面对面的,都只是注册函数中的一个变量……使用4+PHP类来处理本质上相同的操作似乎有些过分。这么复杂有什么原因吗?也许更多细节会有所帮助。您可以使用PHP ORM,它将创建表示每个模型的类。我想到了推进或教条,但还有其他的。听起来你有课程和购买实体,而不是每个课程的具体实体。诸如用户获得访问权限的时间等只是课程的列/属性。更新了问题,详细说明了为什么每个类都有单独的类。