심층 분석 은 PHP 로 MVC 를 실현 한다.

4805 단어 php이루어지다mvc
PHP 에서 MVC 를 사용 하 는 것 이 점점 유행 하고 있 습 니 다.특히 일부 오픈 소스 의 프레임 워 크 에서.MVC 는 대부분의 상황 에 충분히 대응 할 수 있 지만 일부 상황 은 적합 하지 않다.예 를 들 어 비교적 간단 한 개인 블 로그,수백 편의 글 만 있 는 블 로그 에 대해 MVC 를 사용 하 는 것 은 사람 으로 하여 금 너무 복잡 하 게 느끼 게 한다.마찬가지 로 시 나 닷 컴 등 포 털 사이트 에 MVC 를 사용 하면 대량의 파일 이 불 러 오고 속도 에 미 치 는 영향 은 받 아들 일 수 없다.
전통 적 인 관상 과정 식 개발 방식 은 중형 이상 의 응용 을 처리 할 때 힘 에 부친 다.비록 우리 가 수 요 를 신속하게 완성 할 수 있 지만 수요 가 변 경 된 후에 또는 후기 유 지 를 할 때 우 리 는 우리 가 초기 에 구축 한 함정 에 깊이 빠 질 것 이다.따라서 대상 을 대상 으로 하 는 방식 으로 MVC 모델 을 실현 하면 우리 가 프로그램의 구 조 를 정리 하 는 데 뚜렷 한 방향 을 제공 할 것 이다.
MVC 가 뭐 예요?

MVC 에 대한 정의 와 해석 은 다양 하 다 고 할 수 있다.우 리 는 Wiki 나[2]에서 더욱 상세 한 설명 을 찾 을 수 있 습 니 다.여기 서 저 는 계획 하지 않 고 깊이 있 게 설명 할 능력 도 없습니다.PHP 개발 의 측면 에서 볼 때 MVC 는 다음 과 같이 요약 할 수 있 습 니 다.
보기(The View):
보기 하면 우 리 는 많은 사람들 이 템 플 릿 엔진(예 를 들 어 Smarty 등)을 생각한다.html 템 플 릿 과 자바 script 파일 등 다양한 출력 입 니 다.
모듈(The Model)
모듈 은 프로그램의 논 리 를 대표 하 는데 기업 응용 에서 흔히 업무 논리 층 이 라 고 부른다.일반적으로 이 층 에서 완 성 된 작업 은 원 초적 인 데 이 터 를 우리 가 디자인 한 데이터 구조 에 따라 저 장 된 의미 있 는 데이터 서열 로 처리 하고 이 데 이 터 를 보기 에 맡 기 는 것 이다.일반적으로 모듈 에 서 는 데이터 추상 류 를 이용 하여 데이터 조작 과 관련 된 처 리 를 한다.
Model 은 보통 데이터베이스 와 접촉 하 는 함수 들 을 포함 합 니 다.
컨트롤 러(컨트롤 러)
컨트롤 러 는 모든 WEB 가 사용 하 는 첫 번 째 역 을 받 아들 입 니 다.예 를 들 어$GET 변 수 는 그 에 상응하는 반응 을 한다.
MVC 가 PHP 에 적합 한 지 에 대한 논쟁 도 많다.사람들 은 MVC 가 PHP 에 적합 한 지 에 대해 끊임없이 토론 하고 있다.[3]지금도 PHP MVC 프레임 워 크 에 열 거 된[4]와 같은 MVC 프레임 워 크 가 많이 있다.그렇다면 왜 사람들 은 MVC 에 열광 하 는 것 일 까?우 리 는 왜 MVC 를 우리 디자인 에 사용 해 야 하 는 것 일 까?
MVC 를 왜 써 요?
MVC 는 최초 로 데스크 톱 GUI 의 프로 그래 밍 문 제 를 해결 하 는 데 사 용 됐 으 며,최초의 MVC 프레임 워 크 는 Sun 이 1999 년 에 제기 한 Model 2 였 을 것 이 고,이후 Struts 로 발전 했다.MVC 는 사람들 에 게 깊 은 인상 을 주 었 지만 우리 가 사용 하 는 과정 에서 왜 MVC 를 사용 하 는 지 진지 하 게 생각해 본 적 이 없다.
전통 적 인 데스크 톱 애플 리 케 이 션 에서 Model 에서 시간 이 발생 하면 저 희 는 자발적으로 View 인터페이스 를 새로 고침 하여 배경 에서 발생 하 는 변 화 를 보 여 드릴 수 있 습 니 다.웹 애플 리 케 이 션 에서 저 희 는 전통 적 인 Http 의 Request/Response 방식 에 국한 되 어 있 는 것 같 습 니 다.저 희 는 사용자 측 을 업데이트 시 킬 방법 이 없 는 것 같 습 니 다.이 토론 은 MVC 가 WEB 애플 리 케 이 션 개발 에 사용 할 수 없다 고 생각 하 는 것 이 아니 라 어느 정도 적절 하지 않다 고 생각 하 는 것 이다.
MVC 사용 에 관 한 논쟁 은 아직 많다[1].그러나 MVC 를 사용 하여 자신의 프로젝트 를 조직 하 는 데 익숙 한 모든 사람들 이 새로운 프로젝트 구 조 를 선택 하 게 할 때 MVC 를 포기 하지 않 을 것 이 라 고 믿는다.
어떻게 MVC 를 실현 합 니까?
다음은 매우 간단 한 MVC 구조의 실현 입 니 다.심지어 데이터 소스 까지 내 장 된 고정 배열 을 사 용 했 습 니 다.간단 하지만 사실은 많은 PHP Framework 핵심 이 실현 하 는 사상 은 이것 과 차이 가 많 지 않 을 것 입 니 다.다만 일부 framework 는 개발 자 들 이 사용 하기에 편리 한 도 구 를 제 공 했 습 니 다.저도 스스로 PHP 의 구 조 를 실현 하고 싶 습 니 다.현재 기획 에 착수 하고 있 으 며 프레임 워 크 개발 에서 더 많은 PHP 디자인 사상 과 방법 을 배 울 수 있 기 를 바 랍 니 다.
Controller.php

include 'Model.php';
include 'View.php';
class Controller {
private $model = '';
private $view = '';
public function Controller(){
$this->model = new Model();
$this->view = new View();
}
public function doAction( $method = 'defaultMethod', $params = array() ){
if( empty($method) ){
$this->defaultMethod();
}else if( method_exists($this, $method) ){
call_user_func(array($this, $method), $params);
}else{
$this->nonexisting_method();
}
}
public function link_page($name = ''){
$links = $this->model->getLinks();
$this->view->display($links);
$result = $this->model->getResult($name);
$this->view->display($result);
}
public function defaultMethod(){
$this->br();
echo "This is the default method. ";
}
public function nonexisting_method(){
$this->br();
echo "This is the noexisting method. ";
}
public function br(){
echo "";
}
}
$controller = new Controller();
$controller->doAction('link_page', 'b');
$controller->doAction();
==================================
Model.php
class Model {
private $database = array(
"a" => "hello world",
"b" => "ok well done",
"c" => "good bye",
);
//@TODO connect the database
//run the query and get the result
public function getResult($name){
if( empty($name) ){
return FALSE;
}
if( in_array($name, array_keys( $this->database ) ) ){
return $this->database[$name];
}
}
public function getLinks(){
$links = "Link A ";
$links.= "Link B ";
$links.= "Link C ";
return $links;
}
}
====================================================
View.php
class View {
public function display($output){
// ob_start();
echo $output;
}
}

좋은 웹페이지 즐겨찾기