지난 몇 주 동안 PHP를 사용하여 웹 응용 프로그램의 MVC 디자인 패턴을 연구했습니다. 넓은 시야를 통해 패턴이 어떻게 작동하는지, 왜 작거나 큰 웹 응용 프로그램을 구현하는 좋은 방법인지 이해합니다.MVC PHP 웹 응용 프로그램에서 컨트롤러 만들기 및 결합
내가 알고있는 것처럼 우리는과 같이 컨트롤러를 통해 서로 이야기 3 개 별개의 층이 있습니다
사용자 입력 --->보기 ---> 컨트롤러 ---> 모델
사이트 출력 < ---보기 < --- 컨트롤러 < --- 모델
내 계획된 구현으로는 내 데이터베이스의 각 테이블에 대한 모델을 갖기를 원하며 각 모델에는 관리에 필요한 모든 기능/논리가 있습니다. 이 테이블. 각 모델에는 차례대로 연관된보기가 있습니다. 모델과 뷰에는 물론 사용할 수있는 컨트롤러가 있습니다.
데이터베이스를 필요로하는 각각의 논리적 작업이 다뤄지면서 머리 글자를 익히기가 쉽습니다. 그러나 특정 작업에서 하나 이상의 테이블/모델을 사용해야하는 경우에는 어떻게됩니까?
응용 프로그램의 관리자 측에서 데이터베이스를 유지 관리하기 위해 한 번에 두 개 이상의 모델이 필요하지는 않습니다. 애플리케이션의 프런트 엔드 또는 사용자 측은 다른 문제입니다. 특정 섹션에 대한 기사 목록, 현재 로그인 한 사용자 목록 및 태그 클라우드와 같은 SO 사이트 통계의 예제를 빌려주는 웹 페이지가 있다고 가정 해보십시오.
이 한 페이지에는 아티클, 사용자 및 태그와 같은 계획된 디자인에 적어도 3 개의 모델이 필요합니다.
분명히 내 단일 컨트롤러가 그것을 자르지 않을 것입니다. 그래서 내가 뭘하니?
내 웹 페이지에 새로운 모노 리식 컨트롤러를 만드시겠습니까?
- 나를 내가 원하는 결과를 얻을 수 있도록
- 코딩 중복을 많이 필요로 변경
작은 조작하는 "슈퍼"컨트롤러를 만들기 필요한 경우 유지하기 위해 정말 열심히
- 특정 컨트롤러
- 내가 원하는 결과를 얻을 수 있습니다. ,
- 는 모듈 것 때문에 하나의 스크립트 에 대한 변경 내가 현재쪽으로 실수를 범하고
[여기 확실한 해결책을 삽입] 만들기 다른 사람에게
에 영향을 미치지 않습니다 옵션 2. 이론상으로 모든 필요한 동작이 더 작은 컨트롤러에 존재하기 때문에 코딩을 줄여야하기 때문에 모든 것이 유지 관리가 쉽습니다.
아마도 다음과 같을 수 있습니다 :
articlecontroller.php
<?php
//Article Controller Script
if($_GET['article'] = 'foo')
{
//magic necessary for displaying article "foo".
}
?>
usercontroller.php
<?php
//User Controller Script
if($_GET['user'] = 'display')
{
//magic necessary for displaying users
}
?>
supercontroller.php
<?php
//"Super" Controller
//magic for setting up page
if(isset($_GET['article']))
{
include('articlecontroller.php');
}
if(isset($_GET['user']))
{
include('usercontroller.php');
}
?>
본인의 수퍼 컨트롤러는 해당 특정 페이지가 필요로하는 것을 살펴본 다음 과감한 작업을 수행하는 데 필요한 컨트롤러를 포함합니다. NB : 코드는 단지 빠르고 빠 른 예일뿐입니다.
그러나 나는 결코 프로가 아니므로, 저는 여러분에게 묻습니다. 어떤 옵션이 선호됩니까? 옵션 3이 아니라면 어떻습니까? 모든 코드 스 니펫/예제는 좋지만 필수는 아닙니다.
지금까지 작성하신 경우 시간을내어 감사합니다. [및 답변을 받아 - 그렇게 깜빡 : P]를
은 내가이 질문을 업데이트 할 거라 생각 했어요. 저는 Fat Models/Skinny Controllers의 개념을 살펴 봤습니다. 어떻게 완성 되었는가를 좋아합니다. 그래서 나는 확실히 그 방향을 취할 것입니다.
다른 프레임 워크와 MVC 패턴을 얻는 방법에 대한 조언을 구했습니다. 받아들이는 것이 많습니다! 아직도, 나는 길을 따라 새로운 것들을 배웠다. 그래서 큰 도움이되었다. 앞으로 더 많은 질문을 할 수도 있지만, 지금은 시작하기에 충분합니다.
입력 해 주셔서 감사합니다.
그것은 아주 작은 프레임 워크이기 때문에, 1 모델 = 1 테이블은 대부분 꽤 잘 작동합니다. 그러나 어떤 모델은 하나 이상의 테이블을 필요로한다는 것을 알고 있으므로 완전히 제한하지는 않을 것입니다. 나는 자신의 PHP 프레임 워크 인 www.radicore.org를 개발 한 Tony Marston이라는 사람이 기사를 읽는 동안 약간의 시간을 보냈습니다. 그는 1 Model = 1 Table을 사용하는 것을지지하며, 그것은 내 자신의 디자인에 영향을 준 그의 아이디어이다. 그것은 그가 유일한 길임을 말하는 것은 아니지만 그는 매우 견고한 구조를 가지고 있으며 자신의 물건을 아는 사람입니다. – Etzeitet
나는 그의 페이지에서 몇 가지 정보를 읽고 있는데 나는 모델에 대한 그의 의도를 오해한다고 생각한다. MVC의 그의 페이지에서 인용 한 내용은 "모델은 데이터 또는 활동 (예 : 데이터베이스 테이블 또는 일부 공장 생산 기계 프로세스)을 나타내는 개체입니다." –
오, 오해하지 마세요. 나는 그가 "테이블 당 하나의 모델"만을 고집하지 않는다는 것을 알고 있지만, 계속 탐구한다면 그것은 눈에 잘 띄는 특징입니다. 어느 쪽이든 내가 이미 말했듯이 1 모델/1 테이블을 엄격히 고수 할 생각은 없지만 그렇게하는 것이 의미가있는 곳에서는 그렇게하지 않으면 아무런 문제가 보이지 않습니다. – Etzeitet