나는 Kohana MVC 프레임 워크를 사용하여 PHP로 MVC 애플리케이션을 구현하는 데 바쁘다. 하지만 제가 말씀 드리고 싶은 몇 가지 작은 성가심이 있습니다.MVC 사용 개선하기
많은 논리가 컨트롤러와 컨트롤러 자체에서 반복됩니다. 나는 그것에 대해 생각 해왔다. 그리고 나는이 공유 된 논리를 포함하는 객체를 정의하는 것이 현명 할 것이라고 생각 했으므로 반복되지 않는다.
그런 다음 일부 podcast 및 Preventing mission creep in your Views, or, ignorance is bliss에서보기 - 모델에 대해 들었습니다. 그래서 뷰 모델이 제가 찾고 있던 모델입니다.
하지만 이제는 뷰 모델에 무엇을 넣을 까?라는 질문이옵니다. 내 생각은 뷰 모델이 해당 뷰에 필요한 모든 정보를 수집하게했습니다. 이것은 모든 컨트롤러/액션이 입력 데이터를 뷰 모델에 전달한 다음 뷰에 전달하는 것만 큼 장점이 있습니다.
똑똑한 생각인가요? 테스트를 수행 할 때 모델을 뷰 모델에 전달하여 조롱하는 것이 현명합니다. 그러나 저는 모델을 실제로 사용하지 않습니다. 대신 컨트롤러가 Doctrine ORM을 통해 데이터베이스에 액세스하도록했습니다. 모든 쿼리를 별도의 메서드로 변환하는 것은 다소 어색한 것으로 보였지만 어쩌면 내가 누락 된 것일 수 있습니다.
보기 모델에 대해 들었을 때, 그들은 단순한 DTO입니다. 그러나 동적으로 약하게 형식화 된 언어에서 그 이점은 무엇입니까?
어쩌면 나는 완전히 잘못된 길을 걷고 있고 다른 일을해야 할 것입니다. 이것에 대한 당신의 생각은 무엇입니까?
편집 : 나는 올바른 정보를 수집하고 오른쪽 뷰에 전달한다에 대해서 이야기하고 논리의 대부분
.
예 :
고객 컨트롤러가 있습니다. 여기에는 추가 및 편집의 두 가지 작업이 있습니다. 이 두 가지 작업에 대해서는 동일한보기를 사용합니다. 두 조치 모두에서보기에 대해 동일한 변수가 지정됩니다. 추가 조치에서 양식이 유효하지 않으면 입력 변수가 다시보기로 전달됩니다. 편집 작업에서 기존 값은 통과됩니다. 이것은 내가 다루기를 원하는 큰 복제물이다.
예를 추가했습니다. – Ikke
죄송합니다. 추가 및 편집 간의 복제가 이해가 안되며 코드가 정확히 동일하다는 소리를하지 않습니다. – djna