CodeIgniter MVC(Model View Controller) 프레임워크 예제
MVC 란 무엇입니까?
Model-View-Control에 대한 MVC 표준. 이는 애플리케이션을 세 가지 주요 구성 요소로 분할하는 아키텍처 패턴입니다.
1. 비즈니스 로직 및 데이터베이스 상호 작용을 다루는 모델
2. 컨트롤러는 모델과 뷰 간의 활동을 조정합니다.
3. View는 데이터 표현을 담당합니다.
MVC 아키텍처 패턴의 장점 중 일부는 다음과 같습니다.
- 느슨한 결합 - 구성 요소가 서로 독립적으로 존재하고 작동합니다.
- 유연성 – 개별 구성 요소를 쉽게 변경할 수 있습니다.
- 생산성 향상 – 두 명 이상의 사람이 동시에 프로젝트 작업을 수행할 수 있습니다. 프론트엔드 개발자는 뷰와 프리젠테이션 작업을 할 수 있고 백엔드 개발자는 모델에 집중할 수 있으며 시스템이 느슨하게 결합되어 있으므로 하루가 끝날 때까지 작동합니다.
모델
모델은 데이터 소스와의 상호 작용을 담당합니다. 이는 일반적으로 데이터베이스이지만 요청된 데이터를 제공하는 서비스일 수도 있습니다. 컨트롤러가 아닌 모델에 비즈니스 로직을 포함시키는 것도 일반적인 관행입니다. 이러한 방식을 일반적으로 팻 모델 스키니 컨트롤러(Fat Model Skinny Controller)라고 합니다.
모델은 일반적으로 데이터베이스에 데이터를 기록하고 데이터 편집, 업데이트 및 삭제를 위한 메커니즘을 제공합니다. 최신 웹 애플리케이션에서 모델은 활성 레코드와 같은 데이터 액세스 디자인 패턴을 사용하여 데이터베이스와의 상호 작용을 더 쉽게 만듭니다.
예를 들어 CodeIgniter는 내장 라이브러리 Active Record를 사용하여 모델을 지원하는 반면 Laravel과 같은 다른 프레임워크는 데이터 액세스를 지원하는 Eloquent Object Relational Mapper(ORM)를 사용합니다.
제어 장치
컨트롤러는 사용자로부터 들어오는 리소스 요청을 수신합니다. 이는 모델과 뷰 사이의 중간 역할을 하며 때로는 일부 비즈니스 규칙도 구현합니다. 컨트롤러가 데이터베이스에 사용자를 등록하라는 요청을 받았다고 가정해 보겠습니다.
컨트롤러는 제출된 내용에 대한 데이터 검증을 수행하여 모든 필수 매개변수가 제출되었는지 확인할 수 있습니다. 무언가 누락된 경우 사용자는 적절한 오류 메시지가 표시된 등록 페이지로 리디렉션됩니다. 컨트롤러는 제출된 이메일 주소가 이미 있는지 확인하여 모델에 추가 검증을 수행하도록 요청할 수도 있습니다. 모든 검증 규칙이 통과되면 컨트롤러는 처리를 위해 데이터를 모델에 제출하고 응답을 기다립니다.
모델이 정보를 처리하고 긍정적인 응답을 반환하면 컨트롤러는 적절한 뷰를 로드하고 모델에서 반환된 데이터를 매개변수로 전달합니다.
관측
보기는 최종 사용자에게 표시되는 데이터를 처리합니다. 웹 애플리케이션에서 보기에는 HTML, CSS가 포함되는 경우가 많으며 선택적으로 Java스크립트. 뷰에는 최소한의 프로그래밍 코드가 들어 있습니다. 뷰에 포함된 코드는 일반적으로 모델이나 헬퍼 함수에서 매개변수로 수신한 데이터 컬렉션을 반복하여 데이터를 정리하거나 레코드를 편집하기 위한 링크를 만드는 데 사용됩니다. 대부분의 최신 웹 애플리케이션은 일반적으로 의사코드와 비슷하고 디자이너가 쉽게 이해할 수 있는 자체 구문을 정의하는 템플릿 엔진을 사용합니다. CodeIgniter로 작업할 때는 짧은 PHP 태그와 제어 구조를 사용하는 것이 일반적입니다. CodeIgniter에서 무언가를 표시하려면 다음 코드를 사용할 수 있습니다.
<?=$title?>
반대로
<?php echo $title; ?>
제어 구조는 일반적으로 다음과 같이 작성됩니다.
<?php foreach ($customers as $customer): ?> <li> <p><?=$customer->first_name?><p> </li> <?php endforeach; ?>
위의 예에서 볼 수 있듯이 뷰는 다음의 조합을 사용합니다. PHP 모든 것을 순수한 PHP 코드로 묶는 대신 HTML과 HTML을 사용합니다.
MVC 프레임워크는 어떻게 작동하나요?
다음 이미지는 MVC 프레임워크의 작동 방식을 보여줍니다.
컨트롤러는 사용자로부터 요청을 받고, 필요한 경우 데이터베이스 모델과 상호 작용한 후 결과를 HTML 코드 형태로 브라우저에 반환하고, 브라우저는 이를 사람이 읽을 수 있는 형식으로 해석하여 사용자에게 표시합니다.
코드이그나이터 컨트롤러
이제 위의 URL을 웹 브라우저에 로드했을 때 무슨 일이 일어났는지 분석해 보겠습니다.
애플리케이션/컨트롤러에 있는 Welcome.php 컨트롤러 파일을 엽니다.
다음 코드를 볼 수 있어야 합니다.
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
이리,
- Defined('BASEPATH') ORexit('직접 스크립트 접근은 허용되지 않습니다.'); 요청이 index.php를 통해 오지 않은 경우 컨트롤러에 대한 직접 액세스를 방지합니다. 이는 보안 목적입니다.
- class Welcome은 CI_Controller를 확장합니다. {...}는 Welcome 컨트롤러 클래스를 정의하고 상위 클래스 CI_Controller를 확장합니다.
- public function index(){…}는 URL에 응답하는 인덱스 메소드를 정의합니다.
http://localhost:3000
- $this->load->view('welcome_message'); application/views 디렉토리에 있는 Welcome_message 뷰를 로드합니다.
이제 다음과 같이 인덱스 방법을 업데이트하겠습니다.
public function index() { $this->load->model('customers_model'); $data['customer'] = $this->customers_model->get_customer(3); $this->load->view('welcome_message',$data); }
이리,
- $this->load->model('고객_모델'); 고객 모델을 로드합니다.
- $data['customer'] = $this->customers_model->get_customer(3); Customer_model의 get_customer 메소드를 호출하고 매개변수 3을 전달합니다. 이 예에서는 값을 하드 코딩했지만 실제 애플리케이션에서는 이는 URI의 매개변수입니다.
- $this->load->view('welcome_message',$data); Welcome_message 뷰를 로드하고 $data 변수를 뷰에 전달합니다.
코드이그나이터 모델
이제 위 코드에서 참조한 뷰를 만들어 보겠습니다. 단순화를 위해 우리 모델은 데이터베이스 하지만 정적 고객 기록을 반환합니다. 다음 튜토리얼에서는 데이터베이스를 다루겠습니다.
애플리케이션/모델에 Customers_model.php 파일을 생성합니다.
다음 코드를 추가하세요
<?php class Customers_model extends CI_Model { public function get_customer($id) { $data['id'] = 3; $data['first_name'] = 'John'; $data['last_name'] = 'Doe'; $data['address'] = 'Kingstone'; return $data; } }
이리,
- 클래스 Customers_model은 CI_Model을 확장합니다. {...}는 CI_Model을 확장하는 Customers_model 모델을 정의합니다.
- 공개 함수 get_customer($id) {…}는 고객 ID를 기반으로 고객 가져오기 메소드를 정의합니다.
- $data[…]는 가상 고객의 정적 가치를 정의합니다. 이는 데이터베이스에서 반환된 행이어야 합니다.
- $data를 반환합니다. 고객 데이터를 반환합니다.
즉, 우리 모델에 대한 것입니다. 이제 Welcome_message 뷰를 수정해 보겠습니다.
다음 위치에 있는welcome_message.php를 엽니다.
application/views/welcome_message.php
다음 코드로 코드를 바꾸세요.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>CodeIgniter MVC Basics</title> </head> <body> <h1>Customer Details Card</h1> <p>Customer ID : <strong><?=$customer['id']?></strong></p> <p>First Name : <strong><?=$customer['first_name']?></strong></p> <p>Last Name : <strong><?=$customer['last_name']?></strong></p> <p>Address : <strong><?=$customer['address']?></strong></p> </body> </html>
변경 사항을 저장하십시오
웹 브라우저에 다음 URL을 로드하세요
http://localhost:3000/
아래 이미지와 같이 고객 카드를 볼 수 있어야 합니다.
요약
- MVC 애플리케이션을 세 가지 주요 구성 요소로 분할하는 아키텍처 패턴입니다.
- 모델은 데이터 소스와의 상호 작용을 담당합니다.
- 컨트롤러는 사용자로부터 들어오는 리소스 요청을 수신합니다.
- 웹 애플리케이션에서 보기에는 HTML, CSS가 포함되는 경우가 많으며 선택적으로 Java스크립트
- 컨트롤러는 사용자로부터 요청을 받고 필요한 경우 데이터베이스 모델과 상호 작용한 다음 결과를 HTML 코드 형식으로 브라우저에 다시 반환합니다.