簡體   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