繁体   English   中英

PHP OOP问题

[英]PHP OOP question

我只是在寻找一些建议,目前我的数据库设计是一个用户有很多博客帖子。 现在我有一个用户类和一个博客类。

但是我不确定为该用户获取所有博客帖子的正确方法。 我是在用户类中创建一个getAllBlogs()函数,它返回博客对象,还是创建一个可以按用户搜索的主博客类,所以它是getAllBlogsForUser($ id)

谢谢 :-)

我个人使用后面的选项。 这是因为博客类知道如何处理博客表。 我不想在用户类中编写特定于博客的数据库代码。 另一方面,您仍然可以将User::getAllBlogs()添加为Blog::getAllBlogsForUser()的包装器。

这完全取决于你。 由于用户与博客紧密相关,因此您可以同时执行这两项操作。

想想他们可以一起玩得多好:

<?PHP
class User {
    protected $_blogs;

    public function getBlogs($force=false){
        if (empty($this->_blogs) || $force){
            $this->_blogs = BlogClass::getBlogsByUser($this->user_id);
        }
        return $this->_blogs;
    }
}

现在,您可以随时获取用户的博客,并且仅在必要时才会获取它们。 $ force参数可用于强制重新加载。

我不确定这是否真的是一个有用的答案..但是,如果您的数据库设计正确完成正确的规范化实践..它应该表明您的类布局。 由于User是一个独立的实体,并且帖子使用user_id或其他东西作为外键,它应该清楚地告诉你谁应该是主人。 用户可以存在不带帖子的帖子,但是用户不能存在帖子。 因此,将post posts方法放在postss类而不是users类中是有意义的。

我使用两者,比如User::getPostsPosts::findByUserId (“帖子”作为模型名称听起来比“博客”更好)。 两种方法都具有相似的功能,使用哪种方法取决于上下文,例如,前端将使用用户模型,而在管理界面中,“finder”方法可能更合适。

我会创造两者。 您的User :: getBlogs()可以使用Blogs :: getBlogsByUserId($ idUser),因为当您在用户上下文中时,您将可以访问用户的ID以传递给Blogs方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM