문제

나는 몇 달 동안 Kohana를 사용해 왔으며, 코드/프레젠테이션/DB-Layer를 구성하는 MVC 스타일에 비교적 새로운 것이 있습니다. 불행히도, 컨트롤러를 만들고,보기를 설정하고, 모델을 통해 DB와 상호 작용하는 방법에 대한 많은 문서가 있지만, 깨끗하고 제안 된 개발 패턴을 다루는 많은 리소스를 찾지 못했습니다.

간단한 예를 들어 보겠습니다.

내 최신 프로젝트에는 하나의 컨트롤러가 있습니다. 왜냐하면 그보다 더 많은 것을 만들어야할지 확실하지 않기 때문입니다. 새 모델이 필요한시기와 함께 새 컨트롤러가 언제 필요한지 정확히 어떻게 결정합니까?

도움이 되었습니까?

해결책

나는 당신이 그것을 보도록 제안합니다 리소스 지향 아키텍처, 첫 번째. 코드를 구성하는 방법에 대한 직접적인 지침을 제공하지는 않습니다. 그러나 자원 측면에서 생각할 때 새로운 컨트롤러를 만들 것인지 여부를 결정할 때 수명이 더 쉽습니다. 일단 시스템에서 리소스를 식별하면 모델과 컨트롤러를 만드는 것이 일반적입니다.

몇 가지 추가 요점 :

  • 리소스를 찾고 각각의 모델과 컨트롤러를 만듭니다 (규칙)
  • 지속되지 않는 리소스에 대한 모델을 만드는 것을 두려워하지 마십시오.
  • 컨트롤러를 비즈니스 도메인에 대한 사용자의 "배관"또는 "배선"으로 생각하십시오. 그들의 역할은 사용자 요청을 처리하고 답변을 다시 전달하는 것입니다. 가능한 한 얇게 유지하십시오.

다른 팁

규칙 경험은 다음과 같습니다. 내 앱의 새로운 종류의 "항목"을 식별 할 때. 관리해야합니다. 저는 스스로 자아를 묻습니다.

(1) 이런 종류의 항목이 끈기를 유지해야합니까?

(2)이 항목의 많은 사례가 있습니까?

두 질문 모두에 대한 답이 긍정적 인 경우, 상기 항목은 MVC 프레임 워크의 용어에 따라 모델 (또는 모델 요소 또는 도메인 클래스)이어야한다고 결론을 내립니다. 새 모델 요소를 정의하면 네 가지 기본 작업을 지원하는 컨트롤러를 정의합니다 : 생성, 검색, 업데이트, 삭제 (프레임 워크가 기본 컨트롤러를 생성 할 수 있음).

Martin Fowler의 'Enterprise Application Architecture의 패턴'의 사본을 얻고 싶을 수도 있습니다. Web Presentation Section은 현재 MVC 프레임 워크의 현재 웨이브와 같은 전면 컨트롤러 중심의 프레임 워크를 사용할 때 코드를 구성하는 방법에 대해 광범위하게 설명합니다.

나는 명확하게 정의 된 함수 또는 함수 세트를 가진 소규모 컨트롤러를 좋아합니다. 이는 일반적으로 페이지 당 하나의 컨트롤러 (또는 유사한 페이지 세트)를 의미합니다. 내 Kohana 사이트에서 CSSMYSITE 블로그, 연락처, CSS 및 Post Controllers에 대해 이야기합니다.

모든 컨트롤러에 대한 정보는 템플릿을 설정하는 것입니다. 블로그 컨트롤러는 블로그 모델과 상호 작용하여 데이터베이스에서 여러 게시물을 나열합니다. Post Controller는 블로그 모델과 상호 작용하여 데이터베이스에서 하나의 게시물을 표시합니다.

영구적 인 데이터 (블로그 게시물) 또는 여러 번 사용되는 데이터 (드롭 다운 상자의 상태 목록)가있을 때마다 모델로 들어갑니다. 모델은 다른 컨트롤러에 의해 액세스 할 수 있으므로 컨트롤러에 대한 일대일 매핑 일 필요는 없습니다.

아마도 좋은 MVC 프로그래밍을 배우는 좋은 방법은 루비 온 레일에서 시간을 보내는 것입니다. 나는 얼마 전에 레일을 사용하기 시작했고 간접적 인 결과로서 나는 지금 MVC를 잘 이해하고 있다고 생각합니다. 나는 레일을 MVC의 전형으로 본다. 적어도 MVC를 배우는 재미있는 방법 일 수 있습니다 ... 나중에 어떻게 생각할까요?

다음은 Kohana 앱에서 내가하고있는 일의 예입니다.

'최신 뉴스'섹션이 필요했기 때문에 '뉴스'라는 제목의 컨트롤러, 모델 및 뷰를 설정했습니다.

내 뉴스 컨트롤러에는 방법이있었습니다 index(), feed() 그리고 media_releases().

내 모델은 DB 쿼리로 구성되어 MySQL 데이터베이스에서 뉴스 데이터를 얻습니다.

그리고 내 견해는 일부와 함께 많은 HTML입니다. <?php echo $title; ?> 그리고 같은.

전 세계적으로 데이터베이스 메타 데이터를 반복하는 일반 시스템을 정의 할 수없는 이유가 있습니까? 간단한 데이터에 액세스하고 표시하기 위해 일반적으로 모든 코드를 작성하는 것은 불필요한 중복성입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top