Top

코드이그나이터 MVC 프로그래밍 [PHP 기반 웹사이트를 위한 CodeIgniter 프레임워크]

  • 원서명Programming with CodeIgniter MVC (ISBN 9781849694704)
  • 지은이엘리 오르, 예후다 자딕
  • 옮긴이박영훈
  • ISBN : 9788960775060
  • 22,000원
  • 2013년 12월 30일 펴냄
  • 페이퍼백 | 232쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

코드이그나이터는 PHP 기반의 MVC 프레임워크로 사용이 간편하고 탁월한 성능으로 인해 많은 관심을 받고 있다. 이 책은 코드이그나이터의 다양한 컴포넌트에 대해 설명한다. 일반적인 MVC 구조의 핵심을 이루는 모델, 뷰, 컨트롤러에 대해 자세히 다루며 이와 함께 라이브러리, 헬퍼에 대한 자세한 정보를 제공한다. 책 속에 있는 다양한 예제는 각 컴포넌트를 사용하는 방법을 보여준다. 페이스북, 플리커 같은 외부 API 사용법부터 jQuery/AJAX 연동 예제까지, 실제 개발에도 유용하게 참고할 수 있는 예제를 수록했다.

이 책에서 다루는 내용

■ 코드이그나이터 설치, 각 리소스 디렉토리 익히기
■ 자신만의 첫 웹 애플리케이션 개발
■ 자신만의 코드이그나이터 라이브러리 정의
■ 코드이그나이터 컨트롤러 메소드를 이용한 AJAX 호출 처리
■ 컨트롤러, 헬퍼 사용법
■ 코드이그나이터 명명 규칙
■ 모델을 통한 데이터베이스 접근법, 헬퍼를 이용한 그 밖의 리소스 사용법

이 책의 대상 독자

이 책은 객체지향 MVC 개념과 코드이그나이터 플랫폼을 이용해 PHP 웹 애플리케이션을 작성하는 데 관심이 있는 PHP 웹 개발자를 위해 쓰여졌다. 이 책의 내용을 이해하려면 최소한 PHP 프로그래밍, 특히 PHP 객체지향 프로그래밍과 MySQL에 대한 어느 정도의 지식이 있어야 한다.

이 책의 구성

1장 ‘시작’에서는 웹 기반 애플리케이션과 함께 코드이그나이터 프레임워크를 소개한다.

2장 ‘설정과 명명 규칙’에서는 여러 예제와 함께 CI 프로젝트 내에서 필수적인 설정과 사용법, 옵션과 함께 CI의 이름 명명 규칙, 스타일, 철학 등을 살펴본다.

3장 ‘컨트롤러 사용법과 유효 범위'에서는 CI의 컨트롤러와 CI 컨트롤러를 확장한 사용자 정의 컨트롤러를 살펴본다. 명확한 설명을 위해 여러 예제와 함께 CI 컨트롤러 클래스의 서비스, 역할, 정의, 사용법, 범위 등을 살펴본다.

4장 ‘라이브러리’에서는 CI 프레임워크상의 라이브러리를 살펴본다. 라이브러리의 역할, 정의, 사용법, 범위 등을 여러 예제와 함께 학습한다. 라이브러리를 정의하고 사용하는 방법을 보여주는 예제를 보여준다.

5장 ‘헬퍼’에서는 CI 헬퍼와 사용자 정의 헬퍼의 재사용 가치, 정의 규칙, 유효 범위, 사용법 등을 소개한다. 헬퍼를 정의하고 사용하는 방법을 다룬 예제를 제공한다.

6장 ‘모델’에서는 CI 모델과 사용자 정의 모델의 재사용 가치, 정의 규칙, 범위, 사용법 등을 다룬다. 모델을 정의하고 CI 모델을 확장, 사용하는 방법을 보여준다.

7장 ‘뷰’에서는 클라이언트 측에서 시각적인 화면을 생성하고 HTTP를 통해 사용자와 상호작용하는 CI의 뷰 개념을 설명한다. PHP에서의 뷰와 그 범위, 시각적인 컨텐츠(HTML/CSS), 그리고 클라이언트 브라우저를 위한 프로그램(JavaScript/AJAX/jQuery)을 설명한다. 이 뷰의 유효 범위와 정의, 그리고 컨트롤러를 이용한 그리기를 할 때 필요한 실제적인 방법과 요령을 이 장에서 다룬다.

부록에서는 개발자 커뮤니티 환경을 비롯해, 코드이그나이터 자료와 관련된 추천 외부 자료를 제시한다.

저자/역자 소개

지은이의 말

이 책은 엘리스 랩(Ellis Labs)의 코드이그나이터 플랫폼상에서 웹 애플리케이션을 효율적으로 개발하는 법을 가르치는 데 목표를 두고 있다. 코드이그나이터는 객체지향적 모델-뷰-컨트롤러(MVC, Model-View-Controller) 개발 플랫폼이다. MVC에 대한 더 자세한 사항은 http://en.wikipedia.org/wiki/Model-viewcontroller를 참고하라. 이 책을 쉽게 이해하려면 최소한 PHP 프로그래밍 언어, 그중에서도 PHP 객체지향 프로그래밍(PHP OOP)과 그 사용 방법, 그리고 MySQL과 친숙해야 한다.

코드이그나이터(이 책에서는 주로 CI라고 부른다)는 애플리케이션 개발 플랫폼으로서 PHP를 사용해 웹사이트와 웹 애플리케이션을 개발하는 사람들을 위한 도구다. 코드이그나이터는 영리한 애플리케이션 개발 프레임워크로, 고성능과 적은 용량이 뒷받침하는 유연하고도 확장 가능한 핵심부를 갖고 있다. 코드이그나이터는 OSL 3.0 오픈소스 라이선스를 지원하며, 엘리스 랩이 개발, 관리하며 전 세계의 개발자들이 참여하는 강력한 생태계로 이뤄져 있다. 코드이그나이터의 첫 공개 버전은 2006년 2월 28에 나왔으며, 웹 애플리케이션 개발자들로부터 매우 좋은 반응을 얻었다. 2010년 11월에는 유명한 깃허브(GitHub) 커뮤니티 프로젝트에서 코드이그나이터 개발 프로젝트를 추가하면서 점점 더 많은 전 세계 개발자들의 관심을 얻고 있으며, 이에 따라 더 정교하고 더 많은 기능을 가진 애드온을 제공하는 사람들이 나타났다.

잠시 뒤 소개하겠지만, 고급 웹 애플리케이션을 개발하는 데 있어 MVC 개발 패턴과 객체지향 개발 프레임워크에 기반한 웹 개발 트렌드가 점점 더 강해지고 있다. 코드이그나이터가 바로 그런 프레임워크다. 코드이그나이터가 갖고 있는, 작지만 고성능의 OOP 핵심부로 인해 코드이그나이터의 인기는 점점 상승하고 있다. 이 OOP 핵심부를 이용해서 독창적이고 재사용 가능하며 명확한 명명 규칙(naming conventions)을 가진 애플리케이션을 만들 수 있다. 또한 사용자 클래스가 CI 클래스를 상속하기 때문에 이 모든 기능을 확장하는 작업도 매우 용이하다. 이와 함께 점점 더 많은 애플리케이션 플러그인과 추가 라이브러리들이 이용 가능해지고 있다(여기에는 CMS나 쇼핑 카트, 테이블 데이터 내비게이터 같은 애플리케이션 위주 솔루션에서 사용할 수 있는 뷰/컨트롤러/모델/라이브러리/헬퍼 등이 포함된다).

MVC라는 개념은 정보의 표현과 이 정보와 상호작용하는 사용자를 분리하는 사용자 인터페이스를 지원하는 애플리케이션 프레임워크 혹은 개발 패턴을 의미한다. 그동안 성공적인 웹 애플리케이션 개발에서 MVC를 개발 구조로 채택해왔다. 모델(Model)은 애플리케이션 데이터로 구성하며 이를 조작하는 서비스를 제공한다. 컨트롤러(Controller)는 주로 웹 브라우저를 이용하는 사용자로부터 받아들이는 입력을 처리한다. 그리고 이 웹 브라우저가 뷰를 출력한다. 브라우저는 컨트롤러로부터 HTTP 프로토콜을 통해 이미 렌더링한 뷰를 전달받아 출력한다. 컨트롤러가 애플리케이션의 심장이다. 이 컨트롤러가 모델/데이터베이스 업데이트, 비즈니스 관련 계산을 수행하고, 뷰를 그려서 사용자에게 보여주며, 또한 클라이언트가 보낸 AJAX(Asynchronous JavaScript and XML) 비동기 요청을 처리한다. 뷰(View) 코드는 사용자 입력 로직과 표현할 대상을 정의한다. 컨트롤러는 이를 HTML과 자바 스크립트의 형태로 브라우저에게 제공해 그리게 한다. 브라우저는 이 뷰 코드를 HTTP 응답을 통해 전달받아 직접 렌더링한다. 이 컨텐츠를 실행하는 브라우저는 텍스트, 차트, 다이어그램, 이미지가 섞인 데이터를 사용자에게 제공한다.

드루팔(DRUPAL) 같은 오래된 CMS(Content Management System, 컨텐츠 관리 시스템)처럼 CMS의 기능성과 관리에 중점을 둔 기존의 웹 개발 플랫폼도 있다. 컨텐츠 중심의 프로젝트에서는 이런 플랫폼이 매우 유용할 수도 있다. 하지만 프로젝트가 새로운 많은 기능을 개발해야 하는 경우, 즉 많은 입력과 특화된 UI 동작이 필요한 웹 애플리케이션을 만들어야 하는 경우에는 이런 플랫폼이 그다지 매력적이지 못하다. 프로젝트의 요구사항이 작은 용량과 빠른 반응성과 고성능을 요구한다면 코드이그나이터가 훌륭한 결과를 보여줄 수 있다.

그러므로 유연성, 코드 재사용, 가벼운 기반구조, 개발자의 창의력 발휘, 명확한 코드, 고성능, 최소한의 용량, 빠른 학습 곡선의 관점에서 요약하자면 코드이그나이터가 최상의 선택으로 보인다. 더욱이 점점 더 커지고 있는 전 세계적인 개발자 커뮤니티 덕분에 언제나 활발한 개선 작업이 이뤄진다는 장점도 있다.

지은이 소개

엘리 오르(Eli Orr)

30년 이상을 하이테크 관련 산업에 종사해왔으며, 그중 대부분을 소프트웨어 생산 개발 분야에서 일했다. 또한 「와이어리스 시스템 디자인(Wireless Systems Design)」, 「텔리포니 온라인(Telephony-Online)」, 「콤스디자인(CommsDesign)」, 「EE 타임스(EE Times)」 등의 잡지에 다양한 신기술과 관련한 여러 편의 글을 기고하기도 했다. 현재까지 엘리는 지난 2년 동안 PHP 고급 웹 애플리케이션 개발자로서 코드이그나이터를 기반으로 하여 다양한 기능을 갖춘 대규모 웹 애플리케이션 개발 프로젝트에 집중하고 있다.

그 이전에는 사업가로서 로고다이얼 재픽스(LogoDial Zappix)를 직접 설립해 CTO와 서버 개발자의 역할을 수행했다. 재픽스는 콜센터 음성 메뉴를 동적으로 시각화해주는 소프트웨어로, 현재 미국과 이스라엘에서 iOS, 안드로이드 기반 스마트폰에서 사용되고 있다.

그보다 더 이전에는 AT&T와 함께 통합 커뮤니케이션을 위한 원격 솔루션을 개발했고, 래드비전(Radvision Ltd)에서 생산 관리자로서 VoIP 개발자 툴킷도 만들었다. 또한 이 시기에 주로 H.323과 관련해 VoIP 프로토콜 표준을 정의하는 ITU-T의 신호 처리 그룹 16ITU-T SG 16에서 활발하게 활동했다.

한때, 이스라엘 항공(IAI, Israel Aircraft Industries)의 자회사인 ELTA에서 C와 C++ 언어 기반으로 프로젝트 개발 팀을 이끌기도 했다.

예후다 자딕(Yehuda Zadik)

IT 분야에서만 20년 이상의 경험을 쌓아왔으며, 특히 객체지향 프로그래밍(OOP, object-oriented programming) 기술에 기반한 소프트웨어 개발 분야에서 전문적으로 일해왔다.

PHP상의 OOP와 리눅스 오픈소스 개발 환경하에서 웹 기반 애플리케이션을 8년 이상 개발한 경험이 있으며, 전자상거래뿐만 아니라 소셜 네트워크까지 통합하는 동적 웹 기반 애플리케이션을 작성하는 데 있어 최신 기술을 사용한다. 또한 유선, 무선, 소셜 네트워크 통합 환경에 필요한 여러 플러그인을 통합하는 일과 관련한 광범위한 지식을 갖추고 있다. 실제로 예후다는 페이스북 API, 링크드인 API, 기타 API 등을 통합, 사용한 애플리케이션을 개발했다.

예후다는 열정적인 코드이그나이터 신봉자로, 지난 2년 동안 다양한 기능을 제공하며 많은 데이터를 처리하는 웹 애플리케이션을 개발해왔다. 그의 고객 중에는 주요 학술 기관도 다수 있다.

옮긴이의 말

이 책은 최근 PHP 개발자들에게 많은 각광을 받고 있는 코드이그나이터 프레임워크에 관한 서적이다.

코드이그나이터 프레임워크는 최근 유행하는 MVC 구조를 채택하고 있다. 명시적으로 컨트롤러, 모델, 뷰의 구조를 사용하며, 그 외 라이브러리와 헬퍼라는 지원 시스템을 통해 내, 외부에 존재하는 리소스를 참조한다.

또한 이 책은 많은 유용한 예제를 제공한다. 예를 들어 페이스북, 플리커닷컴(flickr.com) 같은 유명한 소셜 네트워크와 연동하는 예제는 실제 웹사이트 구축 시에 많은 참고가 되리라 생각한다.

이 책의 예제를 무리 없이 사용하려면 먼저 최소한의 웹 서버와 데이터베이스를 설정할 수 있어야 한다. 저자가 사용하는 MySQL과 phpMyAdmin을 사용하길 권하며(PHP는 물론 기본 사항이다), 간단한 웹 서버, PHP.ini, 데이터베이스 서버에 관한 기본적인 설정을 할 수 있으면 좋다.

각 장에서 예제를 실행하는 데 필요한 설정 사항을 간단하게나마 각주로 밝혀놓았으니 서버 설정 연습도 할 겸 참고하기 바란다.

모쪼록 이 책을 통해 코드이그나이터에 대해 많은 정보를 얻길 기원한다.

옮긴이 소개

박영훈

한국과학기술원 전산학과를 졸업한 후 다수의 회사에서 리눅스, 윈도우 관련 프로젝트 매니저로 일해왔다. 현재는 프리랜서로 스마트폰 애플리케이션과 윈도우 애플리케이션 개발, 그리고 이와 연관된 웹사이트 구축 작업을 하고 있다. 번역서로는 『엑스코드를 이용한 아이패드 개발 24시간 만에 끝내기』(에이콘출판, 2012)가 있다.

목차

목차
  • 1장 시작
    • 코드이그나이터 설치
    • CI 폴더 살펴보기
      • 필수 요소
    • 예제 1: Hello World
      • 컨트롤러 파일
      • 뷰 파일
    • 예제 2: 복잡한 매개변수를 뷰에 전달하기
      • 컨트롤러 파일
      • 뷰 파일
    • 예제 3: 모델을 이용해 데이터베이스에 질의한 후 그 결과를 뷰에 렌더링하기
      • 컨트롤러 파일
      • 모델 파일
      • 뷰 파일
    • 예제 4: 대화형 연락처 폼
      • 컨트롤러 파일
      • 뷰 파일
    • 정리

  • 2장 설정과 명명 규칙
    • CI 디렉토리 구조
      • config.php
      • database.php
      • routes.php
    • 자신만의 설정 정의와 사용
    • CI 명명 규칙의 이해와 사용
      • 주요 리소스 명명 규칙
        • 컨트롤러 정의 명명 규칙
    • 예제 1: 컨트롤러의 index 메소드 호출
    • 예제 2: 매개변수 없이 컨트롤러의 calc 메소드 호출하기
    • 예제 3: 매개변수와 함께 컨트롤러 메소드 호출하기
    • 예제 4: AJAX를 통해 AJAX 처리 메소드를 매개변수와 함께 호출하기
      • 라이브러리, 모델, 헬퍼 로딩
    • 그 밖의 명명 규칙
    • 정리

  • 3장 컨트롤러 사용법과 유효 범위
    • CI 컨트롤러의 유효 범위
    • 사용자 정의 CI 컨트롤러
      • CI 컨트롤러 확장
    • CI 컨트롤러 사용 예
      • 예제 1: 기본 홈페이지 컨트롤러
        • 컨트롤러 파일
        • 뷰 파일
        • 설정 파일
      • 예제 2: 첨부파일과 함께 이메일 전송하기
        • 컨트롤러 파일
      • 예제 3: 관리자와 일반 사용자 로그인
        • 컨트롤러 파일
        • 모델 파일
        • 예제를 위해 데이터베이스에 업로드할 SQL 파일
        • login_view 파일
        • logininview 뷰 파일
    • 정리

  • 4장 라이브러리
    • CI 라이브러리의 유효 범위와 사용법
      • 사용 가능한 CI 라이브러리
    • 예제 1: 내장 라이브러리 사용
      • 컨트롤러 파일
      • 뷰 파일
    • 예제 2: 구글 맵 CI 라이브러리 래퍼 사용
      • 컨트롤러 파일
      • 뷰 파일
    • 예제 3: 플리커 AIP 래퍼 라이브러리 구축
      • flickr_wrapper.php 라이브러리 파일
      • flickr_recent.php 컨트롤러 파일
      • flickrrecentview.php 뷰 파일
    • 예제 4: 링크드인 API 래퍼 구축
      • 프로젝트 요구사항
      • 인증 흐름
      • linkedin_handler.php 라이브러리 파일
      • linkedinfo.php 컨트롤러 파일
      • linkedin-me.php 뷰 파일
    • 정리

  • 5장 헬퍼
    • CI 헬퍼의 유효 범위와 사용법
      • 사용 가능한 CI 헬퍼
        • CI 시스템 내장 헬퍼
        • CI 제3자 헬퍼
    • 예제 1: 내장 헬퍼 사용
      • 컨트롤러 파일
      • 뷰 파일
    • 예제 2: 제3자 헬퍼 사용(SSL 헬퍼)
      • 헬퍼 파일
      • 컨트롤러 파일
      • 뷰 파일
    • 예제 3: 자신만의 헬퍼 구축(my_download 헬퍼)
      • 헬퍼 파일
      • 컨트롤러 파일
      • 뷰 파일
    • 정리

  • 6장 모델
    • CI 모델의 유효 범위
      • 모델의 경로
      • 모델 로딩
      • 모델의 메소드 사용
      • 데이터베이스 연결
      • 비즈니스 로직
    • 객체 관계 매핑
      • 간단한 ORM 사용 예제
    • 예제 1: CRUD 예제
      • 컨트롤러 파일
      • 모델 파일
      • 뷰 파일
    • 예제 2: 비즈니스 로직 예제
      • 컨트롤러 파일
      • 모델 파일
      • 뷰 파일
    • 예제 3: 페이스북으로부터 데이터 가져오기
      • 컨트롤러 파일
      • 모델 파일
      • 뷰 파일
    • 정리

  • 7장
    • CI 뷰의 유효 범위
      • CI 뷰에서 사용하는 리소스의 경로
      • 렌더링 흐름
      • 뷰의 유연성
    • 라이브러리와 헬퍼 접근
      • AJAX
      • 파서 설정
      • jQuery 같은 클라이언트 라이브러리와의 통합
      • 뷰 렌더링에 사용하는 플러그인
    • 예제 1: 구글 맵을 활용한 HTML 5 위치 서비스
      • 컨트롤러 파일
      • 뷰 파일
    • 예제 2: AJAX와 jQuery UI를 활용한 사용자 피드백
      • ajax_handler.php 컨트롤러 파일
      • users_model.php 모델 파일
      • loggedinview.php 뷰 파일
    • 정리
  • 부록

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

2015.6.2 수정사항