블로그 이전했습니다. https://jeongzero.oopy.io/
codeigniter 프레임워크 구조 및 문법
본문 바로가기
프로그래밍 관련/Web

codeigniter 프레임워크 구조 및 문법

728x90

 

1. 프레임워크 구조

  • 컨트롤러 → (모델에서 필요한 데이터 처리) → 뷰로 넘겨주기
  • URL 구조 : localhost/index.php/컨트롤러/컨트롤러_함수/인자들..
  1. 컨트롤러
    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    
    class Auth extends CI_Controller {
        function __construct()
        {       
            parent::__construct();    
        }  
    
        public function index()
    	{
            $this->load->view('head');
            $this->load->view('nav');
            $this->load->view('auth/login');
            $this->load->view('footer');
        }
    ?>
    • 컨트롤러 파일에서 Class 이름은 첫글자 대문자로 써야하고, 파일명과 동일하게 작성
    • 초기 해당 컨트롤러에서 index()가 호출됨.

     

  1. 모델
    <?php
    class User extends CI_Model {
     
        function __construct()
        {        
            parent::__construct();
        }
     
        function add($option)
        {
            $this->db->set('userID', $option['userid']);
            $this->db->set('userPasswd', $option['userPasswd']);
            $this->db->set('userName', $option['userName']);
            $this->db->set('userSex',$option['userSex']);
            $this->db->insert('user');
            $result = $this->db->insert_id();
            return $result;
        }
    ?>
    • 모델은 대체적으로 DB와 상호작용하는 직접적인 역할임
    • DB 사용방법들은 codeigniter 한국개발자포럼? 거기가면 문법들 나와있으니 모르는거 찾으면됨
    • model 의 함수에 들어있는 인자는, 컨트롤러에서 넘어옴

     

  1. <div id="cont-log">
    	<form action="/index.php/auth/authentication" id="login-form" method="POST">
    		<label class="legend">아이디</label>
    		<input name="userid" type="text" required>
    		<label class="legend">패스워드</label> 
    		<input name="password" type="password" required> 
    		<input type="submit" name="key" value="login">
    		<a class="legend" style="float:right;" href="/index.php/auth/register">회원가입</a>
    	</form>
    </div>
    • 뷰는 말그대로 사용자에게 보여지는 파일임

     

     

2. 설정파일 (config 폴더)

 

config 폴더를 살펴보면 많은 설정 파일들이 있음. 

  • autoload : 자동으로 로딩되는 기능들을 설정 가능
  • config : 실제 설정내용(db나 등등)을 기입
  • database : db 관련 설정
  • routers : url 경로 라우팅 관련 설정 가능

 

autoload 파일안에서 helper랑 library도 설정 가능 

  • helper

    자주 사용하는 로직을 재활용 할 수 있게 만든 일종의 Library 

  • library

    말 그대로 라이브러리 

 

Helper와 Library의 차이점은 Helper가 객체지향이 아닌 독립된 함수라면 Libary는 객체지향인 클래스임. 

 

3. 로그

디폴트로 log_threahold 값이 0으로 되어있음. 4번으로 바꾸면 log 폴더에 로그쌓이는걸 볼수 있음 

 

 

4. 세션

For MySQL
CREATE TABLE IF NOT EXISTS `ci_sessions` (
`id` varchar(40) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
`data` blob NOT NULL,
PRIMARY KEY (id),
KEY `ci_sessions_timestamp` (`timestamp`)
);
  • 세션 저장 sql

 

  • 세션 값이 저 값에 따라서 저장됨. 세션에 어떤 값이 저장되는지는 config에서 설정할 수 있음.

 

 

5. Application Flow

  1. index.php는 CodeIgniter을 시동하기 위한 기본적인 리소스들을 초기화 하는 Front Controller로서의 역할을 수행함.
  1. Router은 각각의 HTTP 요청이 어디로 연결되는지, 어떤 역할을 수행해야 하는지 알려줌.
  1. 만약 캐시 파일이 있으면, 기존의 시스템 실행 과정을 건너뛰고 브라우저에 캐시를 바로 보낸다.
  1. 보안. Application Controller가 로드되기 전에 HTTP 요청의 값들을 필터링한다.
  1. Controller가 특정 요청을 처리하기 위한 Model, Core Libraries, Helpers, 그리고 그 외 리소스들을로드한다.
  1. 데이터 등이 모두 처리된 View가 최종적으로 브라우저에 띄워진다. 만약 캐싱이 켜져 있다면, View는 바로 다음 요청에 응답될 수 있도록 일단 먼저 캐시에 저장된다.
728x90