PHP기반 프레임워크 빠르고 MVC모델 지원
seo.php
class Config extends CI_Controller {
public function index() {
$this->load->view('topic');
}
public function get($id) {
$data = array('id'=>$id);
$this->load->view('get',$data);
}
}
model은 주로 Database를 의미. 데이터베이스를 다루는 로직을 모아 데이터와 뷰를 격리시켜 코드관리의 편의성을 높이고 향후 데이터베이스를 다른 타입으로 교체가 용이하다.
데이터베이스 설정(config > database.php)
hostname : 데이터베이스 서버의 주소 (localhost는 PHP와 같은 머신을 의미)
username : 데이터베이스 사용자의 이름
password : 데이터베이스 비밀번호
database : 데이터베이스 명
dbdriver : 데이터베이스의 종류로 지원되는 드라이브의 목록 system/database/drivers 디렉토리명을 참고한다.
database설정파일은 서버에 접속할 수 있는 기밀정보가 포함되어 있기때문에 버전관리에 포함시키면 안된다. gitignore에 추가시키는 방법도 있다.
데이터베이스 라이브러리 로드
데이터베이스를 사용하기 위해 라이브러리를 로드하는 방법 2가지
MODEL manual
쿼리결과 생성+
모델클래스의 기본 프로토 타입예:
class Model_name extends CI_Model {
function __construct()
{
parent::__construct();
}
}
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Topic extends CI_Controller { //동일한 메소드를 호출할 때
function __construct()
{
parent::__construct();
$this->load->database(); //controller에서 DB 라이브러리 호출
$this->load->model('topic_model'); // 모델 디렉토리 밑에 'topic_model.php'파일을 php가 읽어서 Topic_model class를 로드
}
function index(){
$this->load->view('head');
$topics = $this->topic_model->gets(); // 해당 오브젝트에 접근해서 gets 메소드를 호출
$this->load->view('topic_list', array('topics'=>$topics)); //가져온 data를 두번째 인자에 배열형태로 뷰에 전달
$this->load->view('main');
$this->load->view('footer');
}
function get($id){
$this->load->view('head');
$topics = $this->topic_model->gets();
$this->load->view('topic_list', array('topics'=>$topics));
$topic = $this->topic_model->get($id);
$this->load->view('get', array('topic'=>$topic));
$this->load->view('footer');
}
}
?>

🔹 Underscore.js는 JavaScript의 유틸리티 라이브러리로, 배열, 객체, 함수 등의 다양한 기능을 제공함.
🔹 템플릿 기능(_.template)을 포함하고 있어서, React처럼 데이터를 바인딩하여 HTML을 렌더링 가능.
<script type="text/template" id="exampleTemplate">
<h1><%= title %></h1>
<p><%= description %></p>
</script>
<script>
var template = _.template($('#exampleTemplate').html());
var html = template({ title: "안녕하세요!", description: "Underscore.js로 렌더링된 템플릿입니다." });
$('#content').html(html);
</script>

✅ 4. 그러면, "템플릿 언더바"는 왜 쓰는 건가?
🔥 템플릿 언더바(template)는 프로젝트마다 다르게 정의된 커스텀 템플릿 엔진일 가능성이 큼
🔥 Underscore.js의 .template과 유사하게 동작하지만, 프로젝트마다 다를 수 있음
💡 즉, template_을 적용해야 한다는 것은 해당 프로젝트에서 사용 중인 템플릿 시스템에 맞게 HTML을 동적으로 생성해야 한다는 의미
💡 하지만, 일반적인 JavaScript 템플릿 라이브러리(예: Underscore.js)와는 다를 수 있음
✅ Underscore.js (.template) = JavaScript 라이브러리로, React처럼 변수 바인딩 가능
✅ template (템플릿 언더바) = 프로젝트별 커스텀 템플릿 시스템일 가능성이 큼 (JavaScript 또는 PHP)
✅ 둘 다 JavaScript에서 동적 HTML 렌더링에 사용될 수 있음
✅ 어떤 "template_"을 적용해야 하는지는 해당 프로젝트의 템플릿 엔진을 확인해야 함