PHP OOP soru

5 Cevap php

ben sadece tavsiye biraz arıyordu, Şu anda benim DB tasarımı bir kullanıcı birçok blog ilanları olmasıdır. Şimdi ben bir kullanıcı sınıfı ve bir blog sınıf var.

Ancak bu kullanıcı için tüm blog mesajları almak için uygun bir şekilde hakkında emin değil im. I blog nesneleri döndürür ya da ben size kullanıcı tarafından arama yapabilirsiniz bir ana blog sınıf oluştururum kullanıcı sınıfında getAllBlogs () işlevini oluşturmak mı, bu yüzden getAllBlogsForUser olurdu ($ id)

Teşekkürler :-)

5 Cevap

Ben şahsen daha sonra seçeneğini kullanmak istiyorum. Blog sınıf blog tablo (lar) ile nasıl başa çıkılacağını biliyor olmasıdır. Ben kullanıcı sınıfta blog-özel DB kod yazmak istemem. Öte yandan, yine etrafında sarıcı olarak User::getAllBlogs() ekleyebilir Blog::getAllBlogsForUser().

Bu size kalmış gerçekten. Kullanıcıların oldukça sıkı bloglara birleştiğinde olduğundan, hem de yapabilirdi.

Birlikte oynayabilir nasıl güzel düşünün:

<?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;
    }
}

Şimdi istediğiniz zaman bir kullanıcının bloglar yakala ve sadece gerektiğinde onları almak olacaktır. $ Force parametresi bir yeniden zorlamak için kullanılabilir.

Bu aslında yararlı bir cevap ise ben db tasarımı yerde doğru normalleşme uygulamaları ile doğru yapılırsa ancak .. o da sınıf düzenleri göstergesi olmalı .. emin değilim. Kullanıcı bağımsız bir varlıktır, ve mesaj yabancı anahtar olarak user_id veya bir şey kullanmak gibi, açıkça size efendi olmalı fikir vermelidir. Kullanıcılar ile çıkış mesajlarını var olabilir, ancak ileti dışarı kullanıcılar ile var olamaz. Bu yüzden ziyade kullanıcıların sınıfından daha ilanları sınıfta almak mesaj yöntemi koymak mantıklı.

(Model adı "Bloglar" bana daha iyi geliyor gibi "Mesaj") I User::getPosts gibi, hem kullanımı ve Posts::findByUserId olur. Her iki yöntem de benzer işlevleri olan ve kullanmak için bir, koşullara bağlıdır yönetici arayüzü 'bulucu' yöntemleri daha uygun olabilir iken, örneğin, önyüz yerine, kullanıcılar modelini kullanacak var.

Ben de yaratacaktır. Kullanıcı :: getBlogs () Bloglar kullanabilirsiniz :: getBlogsByUserId ($ idUser) Eğer kullanıcı bağlamında olduğunda, sen Bloglar yöntemine geçmek için kullanıcının kimliği erişebilir beri.