嵌入数据库对象可以吗?

时间:2011-08-01 15:26:06

标签: php database oop class

我有以下数据表:users,user_pictures,messages,forum。概述它的结构:

forum
users
 user_pictures
 messages

因为如果没有用户,则没有user_pictures这两个消息。现在我希望在我的类中构建这个结构化逻辑。我为每个表使用一个独立的类来根据表执行操作。通常看起来像这样:

$forum = new Forum();

$users = new User();

$messages = new Message();

$user_pictures = new User_picture();

但是如果我在用户的构造函数中创建消息和user_pictures呢?它的参考也会在那里。可以吗?

2 个答案:

答案 0 :(得分:1)

  

但是如果我在用户的构造函数中创建了消息和user_pictures呢?

您不应该在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 :(得分:0)

您的逻辑将取决于$ messages和$ user_pictures到底是什么。它们只是该用户的消息和图片,还是论坛的?

如果是第一种情况,那么$ messages和$ user_pictures应该是子类$ user,因为它们与该类相关联。如果是晚些时候,那么他们应该分类$论坛。如果他们不相关,那么他们应该都是他们自己的班级。

如果您要使用$ messages和$ user_pictures来子类$ users,我会在用户对象上创建一个方法来访问这些子类。像$ user-> get_messages这样的东西可以获取与该用户相关的消息,对于用户图片也是如此。