php

CI 프레임워크 활용 (주가스크래퍼)

hojomu 2023. 9. 12. 19:39

CI는 PHP 언어를 기반으로 만들어진 프레임워크다.
MVC 모델을 기반으로 만들어졌으며, 웹 개발부터 일반적인 개발 까지 PHP를 좀 더 편리하게 이용할 수 있게 구성되어있다.

기존에 제작 중이던 주가 스크래퍼를 CI 프레임워크로 migration 하면서 CI의 구성요소를 공부해보았다.


1. index.php   //   .htaccess

기본적으로 CI 프레임워크는 index.php를 기준으로 시작한다.

index 에서는 $system_path , $application_folder의 위치를 찾아주고
FCPATH , BASEPATH 등의 경로 함수를 선언하는 등의 기본 환경 설정을 하고 본격적으로 core/CodeIgniter.php 를 실행한다.

 

index.php를 기준으로 시작하다보니 특별한 조치가 없다면,

www.yourDomain.com/index.php/controller/method

이런 형태로 도메인 이후에 index.php / 컨트롤러 / 함수 형태의 Url이 나오게 될 것이다.

이를 방지하기 위해서,

.htaccess 를 제작해야한다.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

위와 같은 파일을 생성하면, 

일반적인 url 형태로 나타낼 수 있다.

 

2. routes.php

 -> CI는 MVC 모델을 가지기 때문에, 모든 동작을 Controller를 거쳐서 한다.
$route['default_controller'] = ''   -> index.php에서 처음으로 연결 될 Controller를 지정한다.

$route['crawl/(:any)'] = 'crawl/$1'    --> crawl 이라는 컨트롤러 내부에서 $1에 값을 집어넣으면 $1 값에 해당하는 함수를 실행할 수 있다.

 

3. Controller

컨트롤러는 유저에게 view를 보낼지, 백엔드에서 작업을 할지 지정해주는 역할을 한다.

Class 하나의 Class가 하나의 컨트롤러가 된다.

Ci의 기본 컨트롤러는 자기 자신을 instance 하고 기능을 하기 위한 객체들을 생성하는 역할을 하기 때문에,

생성한 객체들을 활용할 수 있도록 load 라는 명령어를 가지고있다

또한 메모리 낭비를 줄이기 위해서, 컨트롤러에서 인스턴스한 객체 또는 함수 등을 다른 클래스에서 해당 객체나 함수만 참조해서 사용할 수 있도록 get_instance() 기능이 있다.

기본 CI_Controller를 상속했다면, 다음과 같이 CI 에서 제공하는 요소들을 미리 선언하거나, Model을 인스턴스 할 수 있도록 준비할 수 있기 때문에, 

많은 객체를 미리 선언해두고, load->model() 기능을 활용해서 필요한 객체를 참조해서 사용할 수 있다.