1 / 12

CodeIgniter 강의

CodeIgniter 강의. 2009. 8. 6 변종원 (blumine@paran.com). 목 차. CodeIgniter 란 ? 3p CI 동작개념도와 구조 4p URL 규칙 5p MVC 6 ~ 8p Library, Plugin, Helper 9p W3 구조 ( 메뉴관리 -URL-PLUGIN) 10p W3 PLUGIN 만들기 11 ~ 12p. CodeIgniter 란 ?. ab -c 5 -n 1000 ab -c 5 -n 1000

Download Presentation

CodeIgniter 강의

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CodeIgniter 강의 2009. 8. 6 변종원(blumine@paran.com)

  2. 목 차 • CodeIgniter란? 3p • CI 동작개념도와 구조 4p • URL규칙 5p • MVC 6 ~ 8p • Library, Plugin, Helper 9p • W3 구조(메뉴관리-URL-PLUGIN) 10p • W3 PLUGIN 만들기 11 ~ 12p

  3. CodeIgniter 란? ab -c 5 -n 1000 ab -c 5 -n 1000 ab -c 100 -n 10000 실행속도 비교 코드이그나이터(이하 CI)는 PHP를 이용하여 웹사이트를 구축하고자 하는 사람들을 위한 개발 프레임 워크 입니다. CI 는 날코딩 하는 분들을 위해 풍부한 라이브러리, 쉬운 인터페이스 및 쉬운 로직을 제공함으로써 개발속도를 높여 드릴 것입니다. CI는 사용자들이 최소한의 코딩만 하도록 하여 프로젝트에 집중할 수 있도록 해줍니다. 누구를 위한 것인가? • 최소 노력으로 사용할 수 있는 프레임워크를 원한다. • 놀라운 프로그램 성능을 원한다. • 다양한 호스팅 환경, 다양한 PHP 버전에서 사용가능 한 호환성을 원한다. • 거의 설정이 필요 없는 프레임워크를 원한다. • 커맨드라인에서 뭔가를 입력할 필요가 없는 프레임워크를 원한다. • 제한적인 코딩 규칙이 없는 프레임워크를 원한다. • PEAR 같이 큰 라이브러리를 별로 좋아하지않는다. • 템플릿 언어를 억지로 배우고 싶지 않다. • 복잡한 것 대신 심플한 솔루션을 좋아한다. • 명확하고 전체 내용을 몽땅 다 설명해주는 설명서를 원한다. 특징 • CodeIgniter 는 무료입니다 • CodeIgniter 는 PHP4 에서 동작합니다 • CodeIgniter 는 가볍고 빠릅니다 • CodeIgniter 는 M-V-C 패턴에 기반합니다 • CodeIgniter 는 깔끔한 URL을 생성합니다 • CodeIgniter 는 확장 가능합니다 • CodeIgniter 는 굉장히 위력적입니다 • CodeIgniter 는 템플릿 엔진이 필요없습니다 • CodeIgniter 는 완벽하게 문서화 되어있습니다 • CodeIgniter 는 친절한 사용자 커뮤니티가 있습니다. 설계목적 : 극한의 성능, 적용성, 최소성, 유연성, 가벼움 • 동적인 작동 • 느슨한 결합 • 컴포넌트 단일성

  4. CI 동작개념도와 구조 • The index.php 는 프론트콘트롤러(front controller)로 동작하여 CI가 동작하기 위한 기반리소스들을 초기화 합니다. • 라우터모듈(Routing)은 http 요청을 분석하여 어떤 동작을 해야 할지를 결정합니다. • 캐쉬파일이 있다면 그 파일을 바로 브라우저로 보내고 일반적인 동작절차는 무시합니다. • 보안모듈(Security)은 프로그램 컨트롤러가 로딩 되기전에 HTTP 요청 및 어떤 사용자 전송데이터든지 모두 필터링합니다. • 컨트롤러(Application controller)는 사용자 요청을 처리하기 위해 모델을 로드하고, 코어라이브러리, 플러그인, 헬퍼 및 필요한 다른 리소스들을 로드 합니다. • 최종적으로 뷰모듈(View)이 렌더링되어 브라우저로 전송됩니다. 캐싱이 활성화 되어 있다면 먼저 캐쉬(Cashing)하여 다음 번 요청에 사용할 수 있도록 합니다. 초기 설치시 디렉터리 구조 각종 설정 컨트롤러 위치 (MVC 에서 C) 헬퍼함수(리턴값이 없는) 후킹 프로그램 위치 에러메시지(언어별 셋팅) 사용자 library나 core 확장 library 모델 위치 (MVC 에서 M) 뷰 위치 (MVC 에서 V) 실제 사용 디렉터리

  5. URL규칙 http://codeigniter-kr.org/user_guide/libraries/uri.html http://hbuilder.com/class/function/ID • 첫 세그먼트는 호출될 컨트롤러class 를 나타냅니다. • 두 번째 세그먼트는 클래스 안의 호출될 function, 혹은 메쏘드를 나타냅니다. • 세 번째 이후는 컨트롤러로 전달될 어떤 변수라도 될 수 있습니다 .(예제에서는 ID) http://hbuilder.com/class/function/ID <?php class Class extends Controller { function Class() { parent::Controller(); } function index() { echo ‘function이 없을때 자동 실행됨'; } function function() { echo $this->uri->segment(3); } } ?> Application/controllers/class.php

  6. MVC - CONTROLLERS http://codeigniter-kr.org/user_guide/general/controllers.html 무조건 MVC패턴을 고수할 필요는 없다. 모델을 만들지 않아도 될 정도의 간단한 처리는 controller에서 모델을 거치지 않고 처리해도 된다. - MVC, VC(M) 형태 Application/controllers/test.php http://hbuilder.com/index.php/test/hello/byun • <?php • class Test extends Controller { • function Test() { parent::Controller(); } • function index(){ • echo ‘function이 없을때 자동 실행됨<br>'; • $this->_utility(); • } • function hello(){ • $this->load->model(‘test_m’, ‘tmodel’); • $data[‘content’] = $this->tmodel->hey($this->uri->segment(3)); • $this->load->view(‘hello_v’, $data); • } • function _utility(){ //Private 함수, 내부에서만 호출가능 echo”내부에서만 되요”;} • } • ?>

  7. MVC - MODELS http://codeigniter-kr.org/user_guide/general/models.html function hello() { $this->load->model(‘test_m’, ‘tmodel’); $data[‘content’] = $this->tmodel->hey($this->uri->segment(3)); $this->load->view(‘hello_v’, $data); } Application/models/test_m.php http://hbuilder.com/index.php/test/hello/byun • <?php • class Test_m extends Model { • function Test_m(){        parent::Model();} • function guys() • { • $val=‘안녕'; • return $val; • } • function hey($name) • { • $val=$this->guys(); • $content = $val.” ”.$name.”!!”; • return $content; • } • } • ?> 공개된 class를 가져와 그대로 사용이 가능하다 MODEL의 기본 형태로만 바꿔주면 된다. http://phpclasses.org공개된 php class

  8. MVC – VIEWS http://codeigniter-kr.org/user_guide/general/views.html function hello() { $this->load->model(‘test_m’, ‘tmodel’); $data[‘content’] = $this->tmodel->hey($this->uri->segment(3)); $this->load->view(‘hello_v’, $data); } Application/views/hello_v.php http://hbuilder.com/index.php/test/hello/byun <html> <head> <title>테스트</title> </head> <body> <h1><?=$content?></h1> </body> </html> PHP의 모든 구문, 함수 사용 가능하다. 데이터는 model에서 가공하여 view에서는 if, foreach 정도만 사용하는 것이 바람직하다. VIEW를 데이터처럼 리턴 받기 $data[‘top’] = $this->load->view(‘top_v', '', true); $data[‘bottom’] = $this->load->view(‘bottom_v', '', true); $this->load->view(‘hello_v’, $data);

  9. Libraries http://codeigniter-kr.org/user_guide/database/index.html 여러 플랫폼을 지원하는 완벽한 데이터베이스 클래스들 액티브레코드(Active Record Database) 지원 폼과 데이터의 검증 보안과 XSS 필터링 세션 관리 Email 전송클래스. 첨부파일지원.HTML/Text 지원.다양한 프로토콜 지원(sendmail, SMTP, and Mail) 등. 이미지 관리 라이브러리(자르기,크기조절,돌리기 등).GD , ImageMagick, NetPBM 지원 파일 업로드 클래스 FTP 클래스 로컬라이즈(Localization) 페이지네이션 데이터암호화 벤치마크 전체페이지 캐싱 에러 로깅 성능측정(Application Profiling) 스캐폴드(Scaffolding) 캘린더클래스 User Agent 클래스 Zip 압축 템플릿엔진 트랙백(Trackback) XML-RPC 라이브러리 단위테스트 검색엔진에 색인되기 좋은 URLs 유연한 URI 라우팅 후킹, 클래스확장, 플러그인 지원 방대한 헬퍼 라이브러리 Plugins http://codeigniter-kr.org/user_guide/general/plugins.html 플러그인은 헬퍼와 거의 비슷하게 동작 차이점은 플러그인은 통상 하나의 기능을 제공하는 반면, 헬퍼는 여러 기능들의 모음. 헬퍼는 코어시스템의 일부로 인식. $this->load->plugin('captcha'); 플러그인을 로드하는 함수는 리턴값이 없음. 로딩 후 사용은 표준 PHP함수처럼 사용 Helpers http://codeigniter-kr.org/user_guide/general/helpers.html 헬퍼는 객체지향적이지 않고 헬퍼의 함수는 간단하고, 절차적이며, 특정한 한가지 일만 하며, 다른 헬퍼함수에 의존하지 않음 $this->load->helper(‘url');

  10. W3 구조 http://hbuilder.com

  11. W3 플러그인 만들기 1 http://hbuilder.com MATCHBOX 적용 (기존 CI구조로는 불가능) Application 디렉터리 이외에 외부 디렉터리에서 CI의 모든 구조를 동일하게 사용할 수 있다. URL체계도 CI와 동일하게 사용 플러그인 디렉터리 (application과 같은 레벨) 플러그인(이름으로 구분) 플러그인 컨트롤러 (MVC 에서 C) 사용자 library나 core 확장 library 모델 위치 (MVC 에서 M) 뷰 위치 (MVC 에서 V) http://hbuilder.com/index.php/board/board/lists /plugins/board/board/lists WIDGET 적용 (기존 CI구조로는 불가능) 컨트롤러에서 다른 컨트롤러를 호출하여 사용 여러 개의 플러그인을 모아 하나의 화면에서 출력하기 위해 사용 plugin::run($plugin, $module_directory, $controller, $function, $skin) CI 기본 구조 플러그인 구조 각종 설정 컨트롤러 위치 (MVC 에서 C) 헬퍼함수(리턴값이 없는) 후킹 프로그램 위치 에러메시지(언어별 셋팅) 사용자 library나 core 확장 library 모델 위치 (MVC 에서 M) 뷰 위치 (MVC 에서 V)

  12. W3 플러그인 만들기 http://hbuilder.com CI 기본 구조 플러그인 구조 플러그인 디렉터리 (application과 같은 레벨) 플러그인(이름으로 구분) 플러그인 컨트롤러 (MVC 에서 C) 사용자 library나 core 확장 library 모델 위치 (MVC 에서 M) 뷰 위치 (MVC 에서 V) CI 와 플러그인의 controller 구조 비교 class Test extends Controller { function Test(){ parent::Controller(); } function index(){ class Test extends Plugin { function __construct(){ $this->CI = & get_instance(); } function run($plugin, $module_directory, $controller, $function, $skin){ 각종 설정 컨트롤러 위치 (MVC 에서 C) 헬퍼함수(리턴값이 없는) 후킹 프로그램 위치 에러메시지(언어별 셋팅) 사용자 library나 core 확장 library 모델 위치 (MVC 에서 M) 뷰 위치 (MVC 에서 V)

More Related