我有以下数据表: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呢?它的参考也会在那里。可以吗?
答案 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这样的东西可以获取与该用户相关的消息,对于用户图片也是如此。