2011-12-31 8 views
1

私は2つのクラスを持っています:ユーザー&コース。PHP:OOPの関係

ユーザーはコースとone_to_manyの関係になります。ユーザーがログインすると、すべてのコースを表示する最も良い方法は何ですか? getAllCoursesByUserという名前のユーザーの下に関数を作成する必要がありますか、それともコースの下に作成する必要がありますか?私はこれらのタイプの機能をどこに置くべきかについて混乱しています。

+0

参照:[モデルビューコントローラ](http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) –

+1

ロジックコードを書いている人(つまりあなた)に意味があります。私は個人的には、ユーザーなしでは関係がなく、コースがユーザーなしで存在するため、ユーザークラスに入れます。 – Duniyadnd

答えて

0

私はこのようにそれを行うだろう:あなたは直接ユーザーからコースにアクセスできる場合のみUserCourseクラス間のIMOの不要な結合を作成すること、

$db = /* database connection */; 

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

。しかし、あなたは本当にそれをどちらかの方法で行うことができます。

4

データを "計算する"クラスに関数を配置します。つまり、ユーザーがいて、そのユーザーが持つすべてのコースを習得したい場合は、getAllCoursesByUserという名前のUserに関数を入れます。コースの配列を返します。特定のコースを持っているすべてのユーザーが必要な場合は、コースに入れてgetAllUsersByCourseと呼んでください。

Duniyadndは言ったように、それは本当にあなた次第です。あなたがそれをはっきりと理解する限り、それは良いコードとみなすことができます。

1

私はむしろ人間的な面から見ると、1人の男は多くのコースを持っていますが、コースには人がいない(人道主義的観点から)人はいません。 もちろん、両方の機能が必要なタスクを達成したいかもしれません。達成するポイントは何ですか?