일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- SSM
- 삼성
- 가상화
- 고려대학교
- 패턴 인식
- Friendship
- BAM
- 파이썬
- 패턴인식
- 증강현실
- 삼성전자 소프트웨어멤버십 SSM
- Neural Network
- Bidirectional Associative Memory
- Python
- 하이퍼바이저
- 물걸레로봇청소기추천
- 삼성소프트웨어멤버십
- 인공지능
- 구글 앱 엔진
- Google App Engine
- 물걸레자동세척로봇청소기
- 신경회로망
- 멤버십
- 갤럭시탭S8울트라
- 빅데이터
- NarwalFreo
- hopfield network
- 동아리
- 나르왈프레오
- 신경망
- Today
- Total
정보공간_1
[4기 부산 김솔] Codeigniter 2 본문
안녕하세요. 부산 멤버십 22-1기 김솔입니다.
이번에는 PHP 기반의 프레임워크인 Codeigniter에 대한 두번째 글을 써보려 합니다.
1. Codeigniter 동작
Codeigniter의 동작에 대해 먼저 알아보겠습니다.
위 그림은 사용자 가이드에 포함된 그림입니다.
(http://ellislab.com/codeigniter/user-guide/overview/appflow.html)
사용자의 모든 요청은 index.php를 통해 처리가 됩니다. url로 넘겨진 정보를 바탕으로 url에 맞는 Controller를 통해 처리되어 사용자에게 결과를 돌려주게 되어있습니다. 위 그림에서 다양한 절차와 여러 가지의 항목들이 있지만, 간단하게 위 흐름도를 살펴보면
1. 사용자 요청에 맞는 Controller 호출
2. (DB 액세스가 필요하다면) Model 호출
3. 사용자 브라우저에 View 리턴
의 과정을 거치게 된다고 보시면 될 거 같습니다.
2. MVC 패턴
쌩(?) PHP에서 개발을 하신다고 하시면 하나의 php 파일에서 get 또는 post의 요청을 받아서 DB에 접속해서 쿼리를 날리고, 결과를 처리해서 html코드로 잘 포장해서 보여주는 코드를 다 작성해서 개발이 가능합니다. 물론 Codeigniter 에서도 마찬가지의 동작으로 Controller에서 위와 같은 형태의 코드를 작성할 수 있지만, Codeigniter 에서는 MVC 패턴에 따라 개발하기 쉽게 되어있습니다.
Codeigniter를 다운받으시고 압축을 풀게 되면 /application/ 의 위치에 위와 같은 폴더구조를 확인 할 수 있습니다. 많은 폴더들이 있겠지만, Controller, Models, Views 폴더가
보이네요. 각 폴더들이 하는 역할은 다음과 같습니다.
- Controllers
http://도메인/Controller/method 의 형태 주소에서 Controller에 해당하는 php 파일들이 모여있는 있습니다. Controllers폴더 하위 요소로 php파일이 아닌 폴더가 위치할 수도 있으며, 그럴 경우 url의 형태는 http://도메인/Folder/Controller/method 가 됩니다.
get, post 등의 요청을 통해 값을 처리하고, Model의 결과값을 View로 넘겨주는 역활을 합니다.
- Model
Controller에서 인자 값을 받아 DB에 쿼리를 날리는 역할을 하며, 이 때 쿼리문의 결과를 Controller로 넘겨줍니다.
- View
Controller에서 처리된 값을 받아 사용자에게 보여줍니다.
3. Hello, World
/application/controllers 폴더에 사용할 Controller 파일을 생성해야 합니다. 저는 ssm.php 파일을 생성했습니다. 생성한 파일을 에디터로 여신 후에 다음과 같은 내용을 작성해주시면 됩니다.
위 그림에서 클래스명을 파일명과 동일하게 해주시면 됩니다. 각 함수명으로 접근하시면 됩니다.
위 소스를 예로 들면 http://도메인명/index.php/ssm/index 로 접속하시면 “Hello, World” 가 브라우저에 출력되는 것을 확인 할 수 있습니다. 위 소스에서 보시면 함수명이 index 인데, index 함수의 경우 기본함수로 취급이 되기 때문에, 브라우저에서 접속할 때 함수명 생략이 가능합니다.
http://도메인명/index.php/ssm/index/
가 동일한 동작을 합니다.
A. url에 index.php가 빠진다면 아름다울 것 같은데…
지금 작성한 코드를 브라우저에서 확인 하려면 주소에 index.php가 포함되어 있는 것을 볼 수 있습니다. 그런데 이 index.php가 url에서 가지는 의미도 없는데 url길이만 길어지고 아름답지 못한 것 같습니다. 그래서 이 index.php를 빼보도록 하겠습니다.
http://ellislab.com/codeigniter/user-guide/general/urls.html
위 주소의 사용자 가이드를 확인하시면 .htaccess를 통해 url에서 index.php를 제거하는 것을 확인할 수 있습니다.
i. index.php 파일이 존재하는 최상위 폴더에 .htaccess 파일을 생성합니다.
ii. .htaccess 파일에 위 그림에 나와있는 내용을 작성 후 저장합니다.
위 순서대로 .htaccess 파일 생성을 끝내신 후에 /application/config/config.php 파일을 열어 index_page 항목을 수정합니다.
위 그림의 index_page 항목에 ‘index.php’로 되어 있던 것을 ‘’로 수정하시면 모든 설정이 끝이 납니다. 이제 /index.php/ssm/index 가 아닌 /ssm/index로 접속하시면 됩니다.
다음으로, index 함수 말고 다른 함수를 만들어 보겠습니다.
위와 같이 bye 함수를 추가하신 후에, /ssm/bye 로 접속을 하시면 브라우저에 Bye가 출력되는 것을 볼 수 있습니다.
이번에는 bye 함수의 타입을 public에서 private로 변경해보겠습니다.
위와 같이 private로 변경 후 /ssm/bye 로 접속하시면, 브라우저에는
404 에러가 출력되는 것을 볼 수 있습니다.
private 타입일 경우 동작하지 않네요, 이제 위 코드를 다시 수정해보도록 하겠습니다.
위와 같이 코드를 변경하고 브라우저에서 /ssm을 확인하시면,
Hello, World
Bye
가 출력되는 것을 볼 수 있습니다.
일반적인 클래스에서처럼 private 속성은 브라우저에서 접근이 불가능하며, 같은 클래스내의 함수에서 접근이 가능합니다.
Index() 함수의 제일 마지막 줄에 $this->bye()를 통해 private 타입의 bye() 가 호출됩니다. 이 때 $this 가리키는 것이 ssm 클래스 입니다. 클래스를 가리키는 방법은 다양합니다.
위 그림에서 보시면 $this, 클래스명, self를 통해 접근하는 것을 확인 할 수 있습니다.
위 세가지를 제외한 다른 방법들이 더 있을지도 모르겠네요,
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[4기 신촌 김형진] UDP Hole Punching 소개 (1) | 2013.10.28 |
---|---|
[4기 부산 김솔] Codeigniter 3 (0) | 2013.10.28 |
[4기 부산 김솔] Codeigniter 1 (0) | 2013.10.28 |
[4기 강남 안태형] OpenFlow 소개 (0) | 2013.10.27 |
[4기 강남 안태형] 쉽게 사용할 수 있는 예측 알고리즘 2 (0) | 2013.10.27 |