2011-09-05 4 views
11

Model-View-Controller 패턴에 대한 (아마도 기본적인) 지식이 있고 이것을 사용하여 사이트를 만들고 싶습니다. 그러나 실제로 이것을 구현하는 방법이 약간 혼란 스럽습니다. 나는 세부 사항에 갇혀있다.일부 프레임 워크를 사용하지 않고 PHP로 MVC를 만드는 방법

각 사용자가 할 일 목록을 보관하는 사이트가 있다고 가정 해 보겠습니다. 어떻게이 접근합니까? 어떤 수업을 만들겠습니까? 어떤 클래스가 HTML을 출력 할 것인가?이 클래스는 컨트롤러로서 서버가 될 것이고 출력을 생성하기 위해 뷰와 어떻게 통신 할 것인가?

미안하지만 바보 같으면 다소 쉬울 지 모르지만 나는 붙어 있습니다.

+2

http://tutorialzine.com/2011/08/jquery-mobile-product-website/ 할일 목록 사이트는 아니지만 MVC 패턴을 사용하는 사이트입니다. – Kheldar

+1

평소와 같이 작성한 후 나중에 MVC로 전송하십시오. 이 작업을 몇 번하면 곧 프로젝트의 시작에서 MVC 패턴으로 시작할 수 있습니다. – chelmertz

답변

5

기존 프레임 워크없이이 작업을 수행 할 수 있으며 직접 만들 수도 있습니다. 어쨌든 그것은 매우 어려운 작업이 아닙니다.

는 응용 프로그램 별 것 아니, 당신의 MVC 프레임 워크는 다음을 수행해야합니다 :

  1. 리디렉션 중앙 페이지의 모든 트래픽이를 모든 요청이 제대로 처리 를 얻을 수 있도록.
  2. 요청 URL에서 컨트롤러와 동작을 추출하십시오. (예를 들어 http://yoursite.com/Task/Add에 대한 요청 인 경우 TaskController의 Add 메서드로 변환해야합니다.)
  3. 컨트롤러 클래스를로드합니다 (예 : TaskController). 아마도 자동로드를 사용합니다.
  4. 전화 컨트롤러
  5. 에 추가 방법은 하나 개의 방법이 실행 않은 ActionResult을 반환, 당신은 ASPMVC을 모방하고 각 컨트롤러의 액션을 가질 수있다 뷰를 구현하는 여러 가지 방법이 있습니다

결과를 표시합니다. 그런 다음 그 과부하 인 ViewResult은 올바른보기를로드하고 적절한 ModelData을 포함하여 처리합니다.

2

귀하의 질문이 너무 광범위하더라도, 나는 약간의 도움을 줄 수 있다고 생각합니다.

프레임 워크를 시작했을 때 내가 가진 첫 번째 질문은 다음과 같습니다. 어떤 프레임 워크를 사용해야합니까? 귀하의 경우, 전 프레임 워크없이 MVC 웹 사이트를 구축하려고하지는 않을 것입니다. 대부분의 아키텍처는 이미 수십 번 이상 작성되었습니다.

DB 추상화, 로그인 시스템 등과 같은 것들은 쓸데없는 것들입니다. 이미 이러한 것들이있는 프레임 워크를 사용할 수도 있습니다.

이 책은 http://www.amazon.com/Building-Applications-Symfony-CakePHP-Framework/dp/0470887346/ref=sr_1_2?ie=UTF8&qid=1315227178&sr=8-2입니다. 세 가지 PHP MVC 프레임 워크를 사용하여 간단한 MVC 웹 사이트를 만드는 과정을 안내합니다. 책이 끝날 때까지 각 프레임 워크에 대해 충분한 경험을 할 수 있으므로 가장 좋아하는 책을 선택할 수 있습니다.

또는 어떻게 완료했는지 배울 수있는 자체 프레임 워크를 작성하려면 TJHeuvel의 대답을 권합니다. 또 다른 옵션은 기존 프레임 워크의 소스 코드를 읽는 것입니다. 그러면 다른 사람들이 어떻게 구현했는지 확인할 수 있습니다.

0

Kheldar의 의견은 완벽합니다. 튜토리얼은 실제로 MVC 패턴을 사용하여 마이크로 프레임 워크를 만드는 방법을 다룹니다.

당신은 여기에 추가해야 할 것입니다 만 -

6

가 여기 .. ​​당신의 자신의 MVC 프레임 워크를 개발에 아주 좋은 아기 단계임을에서 떨어져 사용자 정의 경로 및 라우팅 엔진의 일종을 추가하는 측면에서하지만, RASMUS LERDORF 자신의 질문에 대한 정확한 대답. Read through.

+0

http://talks.php.net/presentations/slides/mvc/example/model/db.phps와 같은 임베디드 코드 예제가 작동하지 않는 것 같습니다. 현재 "PHP 프리젠 테이션 시스템에 오신 것을 환영합니다."라는 메시지가 표시되며이 시스템에 저장된 모든 프리젠 테이션 카테고리를 나열합니다. " 누구든지 PHP 작성자의 자습서 전체 백업을 가지고 있습니까? – baptx

+0

구식 품 –

5

을 태스크.

A) 모델 (들) (선택, 당신은)

<?php 
    class MyModel() { 
    } 
?> 

b)는 PHP에서 배열을 사용하여 경로 (index.php를?)

<?php 
include "..."; 
// here we collects all the information, such post,get and path values 
$action=...; 
$param=....; 
switch($controller) { 
     case "my": // www.myweb.com/my/action 
     include "controller\MyController.php"; // open the right controller. 
     break; 
} 
?> 

C) 컨트롤러

<?php 
include "model\MyModel.php"; 
switch($action) { 
    case "add": 
     // here live the logic, information, call for services and such. 
     $model=....; 
     // and finally... 
     include "view\MyView.php"; 
     break; 
} 
?> 

d)보기

<html> 
    <body> 
     <?=$model->field;?> 
    </body> 

<html> 

참고 사항 :

a) 가능한 한 깨끗한 화면이어야합니다. php를 신경 쓰지 않는 웹 디자이너가 뷰를 생성 할 수 있다고 생각하십시오.

b)보기는 항상 프로세스의 마지막 단계입니다. 뷰 웹은 항상 아무 것도 반환하지 않습니다.