加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP OOP:创建一个新类?

发布时间:2020-12-13 21:44:53 所属栏目:PHP教程 来源:网络整理
导读:我有3张桌子: users:idfirst_namelast_namecourses:idnamestudent_courses:idstudent_idcourse_idpaid 用户跟踪用户,课程跟踪课程,学生课程是显示学生注册哪些课程的表格.我目前有一个“用户”类和一个“课程”类.我的问题是:我应该创建一个StudentCourses
我有3张桌子:

users:
id
first_name
last_name

courses:
id
name

student_courses:
id
student_id
course_id
paid

用户跟踪用户,课程跟踪课程,学生课程是显示学生注册哪些课程的表格.我目前有一个“用户”类和一个“课程”类.我的问题是:我应该创建一个StudentCourses类来处理student_courses表的交互吗?

即:我需要创建一个功能,获取用户已注册的所有课程,将其标记为已付费等.

最好是这样做:

$student = new User($userId); 
$student->getCourses();
$student->markCourseAsPaid($courseId);

要么

$student = new User($userId);
$studentCourses = new StudentCourses($studentId);
$studentCourses->markCourseAsPaid($courseId);

等等

解决方法

如果您根据对象考虑您的student_courses和courses表,您会注意到student_courses是非常有趣的表,因为它包含学生的各个对象.它们是您希望将Student对象连接到的对象.你现在在课程中所拥有的只是 non-changing part of a course,例如它的名字和描述.因此,您的StudentCourse实例可以简单地汇总它.您只需要加载该实例一次,然后在StudentCourse实例之间共享它:

对于Cohesion,您的markAsPaid方法应该在object with the most information required to fulfill it上.换句话说,它应该在Course上.但是,您可以在学生上添加payForCourse proxy method,然后在相应的课程上调用markAsPaid.您可能想要引入充当Repository的Courses类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读