bir forum için MVC yapısı uygun olanı

2 Cevap php

i bir forum im oluşturma için iyi bir mvc adlandırma kuralı kullanmak istiyorum.

ben merak ediyorum, ben bu yapıyı kullanmanız gerekir:

controller: threads
model: threads_model (eg. $threads_model->get_all_threads, $threads_model->add_thread, $threads_model->add_post, $threads_model->add_comment)

controller: tags
model: tags_model (eg. $tags_model->get_all_tags, $tags_model->add_tag)

controller: users
model: users_model (eg. $users_model->get_all_users, $users_model->add_user)

veya

controller: content
model: content_model (eg. $content_model->get_all_tags, $content_model->get_all threads...)

controller: users
model: users_model (eg. $users_model->get_all_users, $users_model->add_user)

this is my first time using mvc so i want to know what is best practice fveyathis. should i like in the first example separate every "thing" (tags, threads, users...) veyashould i use the second one? further more, should i in the first example separate comments and posts as well so they will be their own controllers/models?

would be good if someone gave me some good mvc pattern fveyaforums.

2 Cevap

Eğer attılar 2 üzerinde, id 1 yapısı iyi olduğunu söylüyorlar. Lütfen ayrı varlıklar olarak sistemi ve aralarındaki ilişkileri düşünün. Basit bir örnek olarak,

Thread
Reply
User
Tag

Bu durumda som uygun dernekler olurdu ..

User can create many threads
User can create many replies

Reply Belongs to a User
Reply Belongs to a thread

Thread belongs to a user
Thread has many replies
Thread has many tags

Tag has many threads

Dernekler gibi gerekli yöntemlerin, düşünmek onun biraz daha net yapıldıktan sonra:

**User**
Get Threads: Returns all threads created by this user
Get Replies: Returns all replies created by this user

**Thread**
Get User: Returns the User that created this thread
Get Replies: Return all replies to this thread

**Reply**
Get User: Returns the User that created this reply
Get Thread: Returns the Thread that this user belongs to

Belli ki sen de bir id geçecekti GetThread yöntemi olurdu böylece bir kimlik ile belirli bir konu dönmek isteyebilirsiniz kullanıcı modelinde örneğin daha yöntemler var olacaktır.

Bu size biraz düşünme alır umuyoruz!

Bir başka nokta da örneğin Tag model olarak modelleri,, sen kadar ben farkında olduğum gibi, sen gerçekten de o zaman sadece bir etiketi tarafından denilebilir, sizin modelde bu yöntemi istemem, bir yöntem addTag olması . Eğer bir etiket eklemek için bir etiket oluşturmak için olsaydı size oldukça sıkışmış olsun istiyorum. Id denetleyici içine bu hareket.

Gelecekteki bir özellik, bazı etiketleri endeksi json ya da bir şey gerekir zaman ilk yapı daha iyi olurdu, baştan tüm ayırmak, asla bilemezsiniz.

Her (çoğu) denetleyicisi CRUD eylemleri endeksi, görüntüleme, düzenleme, yeni, kaydetme vb kullanıcısı var

Php otomatik yük fonksiyonu bir model adını alır ve daha sonra () gerektiren bir dosya için modeller dizine bakabilirsiniz.

Evet, ayrı yorumlar ve mesajlar, farklı model ve kontrolörler içine sonrası denetleyici bir eylem ile bir form olabilir yazı işlemek için bir görmek / göstermek eylem olacaktır = "" yorumlar denetleyicisi oluşturmak / kaydetmek eyleme işaret.

"Normal" MVC dosya sistemi yapısı olabilir:

/app/
     controllers/
                 content/                <- controller name
                       home.php          <- actions that require(../../views/content/home.php)
                       view.php
                 users/
                       index.php
                       view.php
                 tags/
                       edit.php
     models/
                 content.php             <-   class Content{ }
                 user.php
                 tag.php
     helpers/
                 application.php       <- grouped up functions for areas of the system
                 tag_helper.php
                 content_helper.php
     views/                             <- templates
                 users/
                        index.php
                        user.php
                        views.php
     public/
                 css/
                        layout.css
                        typography.css
                        style.css
                 images/
                        logo.png
                 js/
                        global.js
                        content.js
                 assets/
                        users/
                                000234.png     <- e.g. profile images

Bu yapı büyük ölçüde çok organize Raylar yapıdan alınır.