2009-12-31 2 views
2

나는 포럼 메신저 만들기에 좋은 mvc 명명 규칙을 사용하고자합니다. 궁금포럼에 대한 적절한 MVC 구조

는,이 구조를 사용한다 :

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) 

또는

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) 

이 MVC 그래서 내가 이것에 대한 가장 좋은 방법이 무엇인지 알고 싶어 사용하여 내 처음이다. 첫 번째 예제에서는 모든 "물건"(태그, 스레드, 사용자 ...)을 구분해야합니까, 아니면 두 번째 태그를 사용해야합니까? 첫 번째 예에서 의견과 게시물을 별도로 분리해야 자신의 컨트롤러/모델이 될 수 있습니까?

누군가 포럼에 좋은 MVC 패턴을 주면 좋을 것입니다.

+0

추한, 평범한 프로그래머는 포럼을 위해 mvc를 계획하는 데 한 달 동안 일하고, 틀린 것이고 사용할 수없는 것을 게시하고 싶습니다. 나를 위해이 질문에 답할 수 없습니다. – streetparade

+0

나는 완전한 설명을주기 위해 많은 시간을 할애하지 않았다. 난 그냥 그렇게 생각을 바꿀 생각이 너무 일반적으로 논의하고 싶었 .. mvc 초보자뿐만 아니라 프로그래머가 – ajsie

답변

4

게시자가 게시 한 2 위의 ID는 첫 번째 구조가 최상이라고 말합니다. 귀하의 시스템을 별도의 엔티티로 생각하고 그들 사이의 관계를 생각하십시오.

: 연관성이 조금 선명 등 필요한 방법을 생각하게되면 간단한 예 적절한 연관 될 것이라고이 경우 솜에서

Thread 
Reply 
User 
Tag 

..

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 

로서

**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 

예를 들어 사용자 모델에 더 많은 메소드가있을 수 있습니다. id를 사용하여 특정 스레드를 리턴 할 수 있으므로 ID를 전달하는 GetThread 메소드를 가질 수 있습니다.

희망 사항을 통해 조금 생각해보세요.

또 다른 요점은 태그 모델과 같은 모델에서 addTag 메서드가 있다는 것입니다. 알고있는 한이 모델은 모델에 실제로는 필요하지 않을 것입니다. 태그에 의해 호출됩니다. 태그를 추가하여 태그를 추가해야한다면 꽤 어려워 질 것입니다. 이걸 컨트롤러로 옮겨.

+0

이것은 논리적 인 모양 – streetparade

+0

thx 좋은 묘사를 위해 본다. 한 가지 질문 만합니다. 내가 원하는 경우 스레드를 만듭니다. $ threads_model-> create_thread ($ user_id) 또는 $ users_model-> create_thread를 사용하는 것이 가장 좋습니다. – ajsie

+0

문제 없습니다. 모델 생성, 업데이트 및 삭제는 일반적으로 컨트롤러에서 수행합니다. 컨트롤러 안에 create() 메소드를 넣거나 클래스를 사용하는 경우 create() 메소드를 Thread 클래스 메소드로 만들 수있다. 그런 다음 컨트롤러에서 Thread.create()를 호출하고 title, body, user_id와 같이 필요한 매개 변수를 전달하면됩니다. 내가 MVC를 생각하는 방식은 모델이 데이터 객체를 정의하고 컨트롤러가 /와 함께 객체를 수행하며 뷰가 객체를 표시한다는 것입니다. 희망이 도움이됩니다. – cast01

2

첫 번째 구조가 더 좋을 것입니다. 처음부터 완전히 분리해야합니다. 향후 기능에 몇 가지 태그 index json 또는 기타 태그가 필요할 때를 알 수 없습니다.

각 (가장) 컨트롤러는, 저장 새로운 CRUD 작업 지수,보기, 편집,없는거야 등

(필요로하는 파일의 모델 디렉토리에 보면 다음 모델 이름을 가지고 할 수있는 PHP는 자동로드 기능).

예 다른 의견과 게시물을 다른 모델과 컨트롤러로 나누면 사후 컨트롤러는보기/표시 작업을 통해 작업의 저장/작성 작업을 가리키는 "="유형의 게시물을 렌더링 할 수 있습니다. 댓글 컨트롤러.

"정상적인"MVC 파일 시스템 구조는 다음과 같을 수 있습니다

/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 

이 구조는 크게 매우 구성되어 레일 구조에서 가져옵니다.

+0

컨트롤러보기가 없다 – streetparade

+0

@streetparade, 물론 그들은 당신에 대해 무슨 말을하지 않는거야? –

+0

컨트롤러에 내용이 있고 집이 있습니다. – streetparade