웹사이트 검색

CodeIgniter: 간단한 예제로 시작하기


소개

CodeIgniter는 웹 애플리케이션 개발 속도를 크게 높이는 데 도움이 되는 강력한 PHP 프레임워크입니다. 라이브러리를 로드하는 모듈식 접근 방식으로 인해 작은 성능 풋프린트를 가지며 Model-View-Controller(MVC) 다이내믹을 사용하여 프리젠테이션에서 로직을 분리하는 훌륭한 작업을 수행합니다.

이 자습서에서는 데이터베이스의 콘텐츠를 표시하는 매우 간단한 애플리케이션을 만드는 방법을 배웁니다. 자신의 CMS를 구축하기 위한 솔루션을 제공하기 위한 것이 아니라 CodeIgniter를 사용할 수 있는 방법을 설명하기 위한 것입니다. 또한 첫 번째 자습서에서 배운 몇 가지 교훈을 실제로 적용하려고 합니다.

계획

이 기사에서는 CodeIgniter의 일부 클래스 및 기능을 사용하여 뉴스 항목이 포함된 데이터베이스 테이블을 쿼리하고 페이지에 개별적으로 표시하는 방법을 보여줍니다. 이를 위해 컨트롤러, 모델 및 뷰와 정보를 보관할 데이터베이스를 생성합니다(MySQL 기술을 연마할 수 있는 리소스가 많기 때문에 후자도 가정함).

데이터베이스 요구 사항은 다음과 같습니다. id(기본 및 자동 증분), 제목 및 본문의 3개 열이 포함된 news라는 테이블입니다. 물론 더 추가할 수 있지만 예제에서는 이 정도면 충분합니다. 그런 다음 더미 뉴스 항목으로 테이블에 몇 개의 행을 만듭니다. 방법을 모르는 경우 이 훌륭한 튜토리얼을 사용하여 데이터베이스를 생성할 수 있습니다. 또한 이 데이터베이스를 사용하도록 CodeIgniter를 구성했는지 확인하십시오.

모델

이제 데이터베이스가 제대로 설정되었고 CodeIgniter가 이를 인식했으므로 정보를 쿼리할 모델 클래스를 생성할 차례입니다. CodeIgniter 설치의 application/models 폴더로 이동하고 news_model.php라는 새 php 파일을 만듭니다(파일 이름은 원하는 대로 지정할 수 있습니다). 파일 상단에 php 여는 태그를 추가하고 기본 CI를 확장하여 모델 클래스를 만듭니다(클래스 이름은 대문자로 시작함을 기억하십시오).

class News_model extends CI_Model {

}

이 클래스 내에서 데이터베이스를 쿼리하는 함수(메소드라고 함)를 만들어야 합니다. CodeIgniter는 데이터베이스 작업을 매우 쉽게 해주는 Active Record 패턴을 사용합니다. 생성자 함수에서 데이터베이스 클래스를 로드하기만 하면 됩니다(application/config 폴더 아래의 autoload.php 파일에 이미 자동 로드하지 않은 경우). 가셔도 좋습니다. 이를 로드하려면 다음 함수를 클래스에 붙여넣으십시오.

public function __construct()	{
  $this->load->database(); 
}

이렇게 하면 이 클래스 내의 모든 메서드가 데이터베이스 기능을 사용할 수 있습니다. 다음으로 데이터베이스 테이블에서 정보를 읽으려면 위에서 언급한 Model 클래스의 메서드가 필요합니다.

public function get_news($id) {
  if($id != FALSE) {
    $query = $this->db->get_where('news', array('id' => $id));
    return $query->row_array();
  }
  else {
    return FALSE;
  }
}

ID가 전달된 행을 news 테이블에서 검색하고 테이블의 모든 열을 포함하는 연관 배열로 반환하기 전에 단순히 ID가 전달되었는지 확인합니다. ID가 전달되지 않으면 함수는 FALSE를 반환합니다.

그래서 정보 검색을 처리합니다. 이제 이 정보를 요구하는 클라이언트의 요청을 처리할 차례입니다. 파일을 저장하고 종료합니다.

컨트롤러

application/controllers 폴더로 이동하여 news.php라는 새 php 파일을 만듭니다(이 파일의 이름은 제공하려는 클래스의 이름과 일치해야 합니다. ). 파일 내에서 php 태그를 열고 확장으로 Controller 클래스를 생성하여 다시 시작합니다.

class News extends CI_Controller {

}

이제 요청을 처리하고 관련 뉴스를 표시하기 위해 이 클래스 내에서 작업할 시간입니다. 모든 어려운 작업은 Model 클래스에서 발생하므로 여기서 해야 할 일은 모델 클래스를 로드하고 표시하려는 뉴스의 ID 인수에 전달하는 것입니다. 이를 처리할 show()라는 함수를 만들어 봅시다.

public function show($id) {
    $this->load->model('news_model');
    $news = $this->news_model->get_news($id);
    $data['title'] = $news['title'];
    $data['body'] = $news['body'];
    $this->load->view('news_article', $data);
}

이 메서드가 하는 일은 다음과 같습니다. 첫 번째 줄은 방금 만든 news_model을 로드합니다. 두 번째는 이를 사용하고 쿼리 결과(행의 모든 열을 포함하는 연관 배열)를 $news 변수에 저장합니다. 세 번째와 네 번째 줄은 검색된 뉴스의 제목과 본문을 $data 배열에 저장하고 다섯 번째 줄은 이를 표시하는 데 사용하려는 보기를 로드하고 정보를 전달합니다. $data 배열의 각 키는 보기 파일에서 인쇄할 변수를 나타냅니다. 그럼 우리가 어떻게 구축하는지 봅시다.

보기

application/views 폴더로 이동하여 news_article.php라는 php 파일을 만듭니다(컨트롤러에 로드한 이름과 동일한 이름이어야 합니다. 로드할 때 php 확장자를 포함할 필요가 없습니다.). 이 파일에서 다음 줄을 복사합니다.

<?php print $title; ?>

<?php print $body; ?>

보시다시피 $title$body 변수는 $data 배열을 통해 컨트롤러에서 보기로 전달됩니다. 원하는 방식으로 페이지를 표시하기 위해 모든 종류의 마크업을 추가할 수 있지만 우리의 목적을 위해 제목에 대한 H1 태그와 본문에 대한 단락이면 충분합니다. 파일을 저장하고 방금 만든 컨트롤러에 브라우저를 지정합니다.

http://example.com/news/show/1

브라우저가 이 요청을 하면 CodeIgniter는 이제 news라는 컨트롤러(news.php라는 php 클래스 파일에서)를 찾고 이라는 이름의 메서드를 호출합니다. >show(), 매개변수 1을 전달합니다. 그런 다음 이 메서드는 데이터베이스를 쿼리하는 news_model을 로드하고 컨트롤러가 표시를 위해 보기에 전달하는 뉴스 조각을 반환합니다. . 매우 간단하고 논리적입니다. http://example.com/news/show/2로 이동하면 ID가 2인 뉴스가 표시됩니다.

여기에 정보가 있는지 데이터베이스를 쿼리하고 이를 클라이언트에 표시하는 기본적이지만 동적 애플리케이션이 있습니다. 이제 3개의 파일과 이 모든 기능 및 구성을 사용하는 이유가 무엇인지 물을 수 있습니다. 함수형 프로그래밍을 관리하기 어려워지고 CodeIgniter와 같은 프레임워크를 사용하지 않으면 이러한 모든 라이브러리를 직접 정의해야 하는 복잡한 애플리케이션을 구축할 때 이에 대한 대답은 분명할 것입니다.

CodeIgniter—기사 #2