PHP MVC 프레임워크 튜토리얼: CodeIgniter 예제

PHP MVC 프레임워크란 무엇입니까?

PHP MVC는 애플리케이션 데이터와 비즈니스 로직(모델)을 프레젠테이션(뷰)에서 분리하는 애플리케이션 디자인 패턴입니다. MVC는 모델(Model), 뷰(View) 및 컨트롤러(Controller)를 나타냅니다.

컨트롤러는 모델과 뷰 사이를 중재합니다.

MVC 디자인 패턴을 자동차와 운전자로 생각해보세요.

자동차에는 운전자(컨트롤러)가 전방 교통 상황을 모니터링하는 데 사용하는 앞유리(뷰)가 있으며, 전방에 보이는 내용에 따라 속도나 브레이크(모델)가 달라집니다.

PHP MVC 프레임워크를 사용하는 이유는 무엇입니까?

  • PHP MVC 프레임워크는 다음과 같은 방법으로 복잡한 기술을 사용하는 작업을 간소화합니다.
    • 모든 복잡한 구현 세부 사항 숨기기
    • 애플리케이션을 구축하는 데 사용할 수 있는 표준 방법을 제공합니다.
    • 개발자 생산성 향상은 데이터베이스 연결, 사용자 입력 삭제 등과 같은 활동의 기본 구현이 이미 부분적으로 구현되었기 때문입니다.
    • 전문적인 코딩 표준 준수

PHP MVC 디자인 패턴

이제 MVC 디자인 패턴의 각 구성 요소에 대해 간략하게 살펴보겠습니다.

모델 – 이 부분은 비즈니스 로직 및 애플리케이션 데이터와 관련이 있습니다. 데이터 검증을 수행하고, 데이터를 처리하고, 저장하는 데 사용할 수 있습니다. 데이터는 다음에서 가져올 수 있습니다.

  • 플랫 파일
  • 데이터베이스
  • XML 문서
  • 기타 유효한 데이터 소스.

제어 장치 – 사용자가 서버로부터 리소스를 요청하는 부분을 다루는 부분입니다.

예를 들어, 사용자가 URL을 요청하는 경우 …/index.php?products=list, 컨트롤러는 제품 모델을 로드하여 제품 데이터를 검색한 다음 목록 보기에 결과를 출력합니다.

간단히 말해서 컨트롤러는 요청된 리소스에 따라 모델과 뷰를 함께 연결합니다.

조회수 – 이 부분에서는 사용자에게 데이터를 표시하는 작업을 다룹니다. 이는 일반적으로 HTML 페이지 형식입니다.

PHP MVC 프레임워크의 유형

최고의 PHP 프레임워크를 선택하는 것은 어려운 일입니다.

MVC의 이점을 활용하기 위해 자체 프레임워크를 작성할 필요는 없습니다.

MVC 프레임워크가 작동하는 방식을 이해하려면 자체 MVC 관련 애플리케이션 디자인을 만들어 보아야 합니다.

MVC 프레임워크 작동 방식에 익숙해지면 성숙하고 이미 테스트된 프레임워크로 전환해야 합니다.

아래 표에서는 인기 있는 일부 PHP 프레임워크와 각 프레임워크가 제공하는 기능을 간략하게 설명합니다.

뼈대 기술설명

CodeIgniter


CodeIgniter


https://codeigniter.com/

가장 널리 사용되는 PHP MVC 프레임워크 중 하나입니다. 가볍고 학습 곡선이 짧습니다. 여기에는 웹사이트와 애플리케이션을 신속하게 구축하는 데 도움이 되는 풍부한 라이브러리 세트가 있습니다. OOP 프로그래밍에 대한 지식이 부족한 사용자도 사용할 수 있습니다. CodeIgniter 기반 애플리케이션에는 다음이 포함됩니다.


코 하나


코 하나


http://kohanaframework.org

계층적 모델 뷰 컨트롤러 HMVC 안전하고 가벼운 프레임워크입니다. 애플리케이션을 빠르게 개발하기 위한 풍부한 구성 요소가 있습니다. Kohana를 사용하는 회사는 다음과 같습니다.


CakePHP


CakePHP


www.cakephp.org

Ruby on rails를 모델로 했습니다. 소프트웨어 디자인 패턴, 구성보다 컨벤션, ActiveRecord 등의 개념으로 유명합니다. CakePHP 전원이 공급되는 애플리케이션에는 다음이 포함됩니다.


젠드

www.framework.zend.com


젠드

이는 강력한 프레임워크입니다.

  • 안전하고 안정적이며 빠르고 확장 가능합니다.
  • Web 2.0 및 웹 서비스 생성을 지원합니다.

다음과 같은 공급업체의 API를 제공합니다. Amazon, 구글, Flickr, Yahoo 등. 비즈니스 애플리케이션 개발에 이상적입니다. Zend 기반 애플리케이션에는 다음이 포함됩니다.

  • 핌코어CMS,
  • DotKernel.

Zend 프레임워크를 사용하는 회사는 다음과 같습니다.

  • BBC
  • Cisco
  • Webex
  • Offers.com

여론조사 애플리케이션을 CodeIgniter로 포팅

이번에 지도 시간, 우리는 PHP 설문 조사 애플리케이션을 만들었습니다. 여기서는 해당 코드를 CodeIgniter로 포팅하겠습니다.

  • 다운로드 최신 버전의 CodeIgniter를 웹 사이트를 방문 하십시오.
  • 웹 서버 디렉터리의 개발 디렉터리에 압축 파일의 콘텐츠를 추출합니다. 이 레슨에서는 ciopinionpoll을 폴더 이름으로 사용합니다.
  • URL로 이동 http://localhost/ciopinionpoll/

여론조사 애플리케이션을 CodeIgniter로 포팅

이제 의견 조사 애플리케이션을 CodeIgniter로 이식할 예정입니다. 우리의 애플리케이션은 세 가지 주요 구성요소, 즉;

  • 전면 컨트롤러 – URL 요청에 응답하고 요청한 페이지를 반환하는 부분입니다. 이 코드는 컨트롤러에 들어갑니다
  • 모델 – 요청된 데이터에 응답하고 요청된 데이터를 반환하는 코드입니다. 이 코드는 모델에 들어갈 것입니다
  • 뷰 – 데이터 형식 지정 및 표시를 담당하는 코드입니다. 이 코드는 뷰에 들어갈 것입니다

    • ciopinionpoll 폴더로 이동
    • 열기 데이터베이스.php application/config 디렉토리에 있는 파일입니다.
    • 다음 코드 줄을 찾으세요

데이터베이스 구성 설정

데이터베이스 구성 설정

  • 사용자 이름을 루트로 설정
  • 비밀번호를 localhost 루트 비밀번호로 설정하세요.
  • Opinion_poll에 대한 데이터베이스 이름입니다. 이전 강의에서 생성된 데이터베이스를 사용할 것임을 참고하세요.
  • 변경 사항을 저장하고 파일을 닫습니다.

모델 만들기

다음으로 CI_Model을 확장할 모델을 생성하겠습니다. CI_Model은 CodeIgniter 라이브러리의 일부입니다. 모델은 애플리케이션/모델에 위치합니다. 의견_poll_model.php

<?php 
class Opinion_poll_model extends CI_Model 
{ 
    public function __construct() 
    { 
    	$this->load->database(); 
    } 

    public function total_votes() 
    { 
    	$query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries');
        return $query->row()->choices_count; 
    } 

    public function get_results() 
    { 
    	$libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow"); 
        $table_rows = ''; 

        for ($i = 1; $i < 5; $i++) 
        {
             $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;"; 
             $result = $model->

             select($sql_stmt); $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; 
        } 
        public function add_vote($choice) 
        { 
        	$ts = date("Y-m-d H:i:s"); $data = array('choice' => $choice, 'ts' => $ts); $this->db->insert('js_libraries', $data); 
        } 
   } 
?>

이리,

  • "class Opinion_poll_model은 CI_Model을 확장합니다..."는 CI_Model을 확장하는 모델입니다.
  • "...부모:: __construct();" CI_Model 생성자를 호출합니다.
  • "$this->로드->데이터베이스();" 애플리케이션이 데이터베이스와 상호 작용할 수 있도록 데이터베이스 라이브러리를 로드합니다.
  • “$this->db->”는 CodeIgniter의 활성 레코드입니다. 이것을 확인하세요 링크 활성 레코드에 대한 자세한 내용은

컨트롤러 만들기 이제 컨트롤러를 만들어 보겠습니다. application/controllers/welcome.php에 있는 기본 CodeIgniter 컨트롤러를 사용할 것입니다. 소스 코드를 다음 코드로 바꾸세요.

<?php

if (!defined('BASEPATH'))  exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function __construct() {

        parent::__construct();

        $this->load->model('opinion_poll_model');

    }

    public function index() {

        if ($this->input->post('submitbutton') && !$this->input->post('vote')) {

            echo "<script>alert('You did not vote!');</script>";

        }

        if ($this->input->post('vote')) {

            $this->opinion_poll_model->add_vote($this->input->post('vote'));

            $data['total_votes'] = $this->opinion_poll_model->total_votes();

            $data['rows'] = $this->opinion_poll_model->get_results();

            $this->load->view('results', $data);

        } else {

            $this->load->view('opinion_poll_form');

        }

    }

}

/* End of file welcome.php */

/* Location: ./application/controllers/welcome.php */
?>

이리,

  • "if (!definated('BASEPATH'))exit('직접 스크립트 액세스가 허용되지 않습니다.');" 사용자가 컨트롤러 클래스에 직접 액세스하지 못하도록 보장
  • "class Welcome은 CI_Controller를 확장합니다..." 컨트롤러는 CI_Controller 클래스를 확장합니다.
  • "공용 함수 __construct()"는 CI_Controller의 클래스 생성자 메서드를 호출하고 Opinion_poll_model 모델을 로드합니다.
  • "public function index()..."는 index.php에 매핑되는 함수입니다. CodeIgniter의 입력 클래스를 사용하여 투표가 제출되었는지 확인하고 이를 데이터베이스에 추가한 다음 결과를 표시합니다. 입력 클래스의 게시물 배열이 비어 있으면 투표 페이지를 로드합니다.
  • "$this->input->post('…')"는 $_POST 전역 변수의 내용을 가져오는 CodeIgniter 입력 클래스입니다.
  • "$this->opinion_poll_model->add_vote($this->input->post('vote'))"는 모델의 add_vote 메소드를 호출하여 데이터베이스에 투표를 추가합니다.

뷰 만들기

이전 예제에서 두 개의 HTML 페이지가 있었는데, 하나는 투표용이고 다른 하나는 결과용이었습니다. 최소한의 수정으로 동일한 HTML 코드를 사용하여 뷰를 만듭니다. application/views 디렉토리에 다음 파일을 만듭니다.

opinion_poll_form.php 
<html>
<head>
    <title>
        JavaScript Libraries - Opinion Poll
    </title>
</head>

<body>
    <h2>JavaScript Libraries - Opinion Poll</h2>
    <p><b>What is your favorite JavaScript Library?</b></p>
    <form method="POST" action="index.php">
        <p>
            <input type="radio" name="vote" value="1" /> JQuery
            <br />
            <input type="radio" name="vote" value="2" /> MooTools
            <br />
            <input type="radio" name="vote" value="3" /> YUI Library
            <br />
            <input type="radio" name="vote" value="4" /> Glow </p>
        <p>
            <input type="submit" name="submitbutton" value="OK" />
        </p>
    </form>
</body>
</html>

이제 결과 페이지를 만들어 보겠습니다. results.php

<html>
    <head>
        <title>JavaScript Libraries - Opinion Poll Results</title>
    </head>
    <body>

        <h2>JavaScript Libraries - Opinion Poll Results</h2>

        <p><b>What is your favorite JavaScript Library?</b></p>

        <p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p>

        <p><table><tr><td>

            <?php print($rows); ?>

        </tr></td></table></p>

        <p><a href="#">Return to voting page</a></p>
</body>
</html>

응용 프로그램 테스트

애플리케이션의 루트 디렉터리가 ciopinion이라고 가정하고 다음으로 이동합니다. http://localhost/ciopionpoll/

PHP MVC 프레임워크 테스트

확인(OK) 버튼을 클릭하면 다음과 같은 경고 메시지가 나타납니다.

PHP MVC 프레임워크 테스트

좋아하는 후보에게 투표한 후 확인을 클릭하세요. 다음과 같은 결과 페이지가 표시됩니다.

PHP MVC 프레임워크 테스트

맺음말

CodeIgniter는 애플리케이션 개발에 소요되는 시간을 크게 줄일 수 있는 PHP MVC 프레임워크를 배우고 사용하기 쉽습니다.
CodeIgniter는 애플리케이션 개발에 소요되는 시간을 크게 줄일 수 있는 PHP MVC 프레임워크를 배우고 사용하기 쉽습니다.

제품 개요

  • 프레임워크는 일반적인 작업의 부분 구현을 제공하는 라이브러리 세트입니다.
  • PHP에는 성숙하고 테스트된 다수의 오픈 소스 MVC 프레임워크가 있습니다.
  • 좋은 개발 접근 방식은 프레젠테이션에서 데이터를 분리하고 애플리케이션에 대한 단일 진입점 사용을 권장합니다.
  • 애플리케이션 디자인 모범 사례를 따르는 기존 PHP 애플리케이션은 최소한의 수정만으로 MVC 프레임워크로 이식될 수 있습니다.

이 게시물을 요약하면 다음과 같습니다.