2011-08-01 25 views
2

私は以下のデータテーブルを持っています:users、user_pictures、messages、forum。その構造を概説するには、ユーザーがいない場合はuser_picturesもメッセージもないので、その構造を概説します。データベースオブジェクトを埋め込むことはできますか?

forum 
users 
user_pictures 
messages 

今私は、この構造化されたロジックを自分のクラスで構築したいと思っています。私は、テーブルごとに独立したクラスを使用して、テーブルに従ってアクションを実行します。通常は、次のようになります。

$forum = new Forum(); 

$users = new User(); 

$messages = new Message(); 

$user_pictures = new User_picture(); 

しかし、メッセージの生成者にuser_picturesを作成するとどうなりますか?そしてそれも参考になるでしょう。大丈夫ですか?

+0

私にとって、 'user_pictures'と' messages'は論理的に 'users'が所有していて、それに応じてオブジェクトを構築するには健全なOOPかどうか聞いているようです。それは正確ですか? –

+0

各スタンドアロンクラスには何が含まれていますか、どのように使用されるかの例を挙げることができます。私は、あなたが必要な場所にインスタンスを作成することができると言うでしょう... – ChrisA

答えて

1

しかし、メッセージの作成者やユーザーの写真をユーザーのコンストラクタに作成するとどうなりますか?

あなたはctorの中を作成するべきではありません。それは、ctorで作業をして、コラボレーターグラフを使って作成グラフを作成することです。複雑なオブジェクトグラフをアセンブルする場合は、BuilderまたはFactoryパターンを使用します。 を協力者のに作成する必要がある場合は、ファクトリまたはビルダーのインスタンスを共同作業者に渡します。 But dont do work in a constructor.

残りの質問は、can be answered the same as your previous questionです。カスタムのDataMapperおよび/またはRepositoryおよび/またはORMを使用してください。あなたのRDBMS構造の後であなたのクラスをモデル化しないでください。

+1

テストのためだけでなく、 +1 – hakre

0

あなたのロジックは$ messagesと$ user_picturesが本当に何であるかによって異なります。そのユーザーのメッセージや写真だけですか?それともフォーラムですか?

最初のケースでは、$ messagesと$ user_picturesは、そのクラスに関連付けられている$ userクラスをサブクラス化する必要があります。それが後であれば、$ forumをサブクラス化する必要があります。彼らが無関係ならば、彼らはすべて自分たちのクラスでなければならない。

$ messagesと$ user_picturesを使用して$ usersをサブクラス化する場合、それらのサブクラスにアクセスするためのメソッドをユーザーオブジェクト上に作成します。 $ user-> get_messagesのようなものが、そのユーザーに関連付けられたメッセージを取得します(ユーザーの画像と同じです)。

関連する問題