2011-12-31 79 views
1

我有2个类:用户&课程。PHP:面向对象的关系

用户将与课程有one_to_many关系。一旦用户登录,显示所有课程的最佳方式是什么?我应该在名为getAllCoursesByUser的用户下创建一个函数还是应该在课程中创建它?我很困惑,在哪里放置这些类型的功能。

+0

请参阅:[模型 - 视图 - 控制器](http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) – 2011-12-31 00:35:14

+1

它应该无关紧要,只要逻辑对编写代码的人有意义(即你)。我个人会把它放在用户类中,因为没有用户就没有关系,而且无论用户如何,课程都不会存在。 – Duniyadnd 2011-12-31 00:35:26

回答

0

我会做这样的:

$db = /* database connection */; 

$id  = 42; 
$user = User::getById($db, $id); 
$courses = Course::getAllByUser($db, $user); 

如果你能够从用户直接访问的课程,只有创建UserCourse类之间IMO不必要的耦合。但是你可以真正做到这一点。

4

将函数放置在数据正在“计算”的类中。这就是说,如果你有一个用户,并且你想要学习用户拥有的所有课程,把这个函数放在User中,叫做getAllCoursesByUser。它将返回一系列课程。如果你想要所有拥有特定课程的用户,请将它放在课程中并称之为getAllUsersByCourse。

正如Duniyadnd所说,这取决于你。只要你清楚地了解它可以被认为是很好的代码。

1

我宁愿把它放在用户部分,因为从更人性化的角度看也是如此 - 每个人都有很多课程,但课程里面不能有人(仅从人文角度)。 当然你可能想要完成一项甚至需要两个功能都存在的任务。你要完成什么任务?