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类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |