티스토리 툴바


달력

05

« 2012/05 »

  •  
  •  
  • 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
  • 29
  • 30
  • 31
  •  
  •  

예전 포스팅 중에서 codeigniter(이하 ci)에서 firephp 사용하기에 대한 포스팅이 있습니다.
그런데 사용할때 마다, $this->firephp->log('내용') 이런식으로 길게 사용하는게 귀찮아서 helper를 제작 했습니다.
아.. 그리고 뒤에 있는 내용들은 일반적으로 사용할 수 있는 debug도 추가해 봤습니다.

먼저 firephp를 설치 하셔야 합니다.

사용법 :
  • application/helper 디렉토리에 debug_helper.php를 복사해 줍니다.
  • application/autoload.php에 helper로딩에 debug를 추가해 줍니다.

파일명 : debug_helper.php
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * firephp
 *
 * @param    $var array, string, integer
 * @type    string : "log", "warn", "error"
 */
function firephp($value, $type = 'log')
{
    if( $type != 'log' AND $type != 'warn' AND $type != 'error')
    {
        $type = 'warn';
    }
    $CI =& get_instance();
    $CI->firephp->{$type}($value);
}

//------------------------------------------------------------------------------

/**
 * firephp
 *
 * @type    string : log, warn, error
 */
function firephp_last_query($type = 'log')
{
    if( $type != 'log' AND $type != 'warn' AND $type != 'error')
    {
        $type = 'warn';
    }
    $CI =& get_instance();
    $CI->firephp->{$type}($CI->db->last_query());
}

//------------------------------------------------------------------------------

/**
 * Outputs the query result
 *
 * @type    string : log, warn, error
 */
function firephp_session($type = 'log')
{
    if( $type != 'log' AND $type != 'warn' AND $type != 'error')
    {
        $type = 'warn';
    }
    $CI =& get_instance();
    $CI->firephp->{$type}($CI->session->all_userdata());
}

//------------------------------------------------------------------------------
/**
 * Outputs an array or variable
 *
 * @param    $var array, string, integer
 * @return    string
 */
function debug_var($var = '')
{
    echo _before();
    if (is_array($var))
    {
        print_r($var);
    }
    else
    {
        echo $var;
    }
    echo _after();
}

//------------------------------------------------------------------------------

/**
 * Outputs the last query
 *
 * @return    string
 */
function debug_last_query()
{
    $CI =& get_instance();
    echo _before();
    echo $CI->db->last_query();
    echo _after();
}

//------------------------------------------------------------------------------

/**
 * Outputs the query result
 *
 * @param    $query object
 * @return    string
 */
function debug_query_result($query = '')
{
    echo _before();
    print_r($query->result_array());
    echo _after();
}

//------------------------------------------------------------------------------

/**
 * Outputs all session data
 *
 * @return    string
 */
function debug_session()
{
    $CI =& get_instance();
    echo _before();
    print_r($CI->session->all_userdata());
    echo _after();
}

//------------------------------------------------------------------------------

/**
 * Logs a message or var
 *
 * @param    $message array, string, integer
 * @return    string
 */
function debug_log($message = '')
{
    is_array($message) ? log_message('debug', print_r($message)) : log_message('debug', $message);
}

//------------------------------------------------------------------------------

/**
 * _before
 *
 * @return    string
 */
function _before()
{
    $before = '<div style="padding:10px 20px 10px 20px; background-color:#fbe6f2; border:1px solid #d893a1; color: #000; font-size: 12px;>'."\n";
    $before .= '<h5 style="font-family:verdana,sans-serif; font-weight:bold; font-size:18px;">Debug Helper Output</h5>'."\n";
    $before .= '<pre>'."\n";
    return $before;
}

//------------------------------------------------------------------------------

/**
 * _after
 *
 * @return    string
 */

function _after()
{
    $after = '</pre>'."\n";
    $after .= '</div>'."\n";
    return $after;
}


//------------------------------------------------------------------------------


다운로드 :


사용법은...
간단한게 소스에서

firephp('내용');
등등.. 함수 내용대로 ^^;

참 쉽죠?

뒷 부분 원본 : http://codeigniter.com/forums/viewthread/130302/#When:06:42:58Z
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

ci(CodeIgniter)에서 접속한 국가를 알아내는 플러그인이 있어서 소개 합니다.


사용자가 접속한 사람의 IP를 가지고 사용자의 지역을 알아 줍니다.
플러그인에서 약간 수정하고 정리한 것을 여기에 올렸습니다. 참고 하시고 사용하세요.


지역 정보는 아래 데이터에서 받아서 사용합니다.(압축에 포함되어 있음)

ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest ftp://ftp.ripe.net/ripe/stats/delegated-ripencc-latest ftp://ftp.apnic.net/pub/stats/iana/delegated-iana-latest

여기서 delegated-iana-latest 파일의 데이터를 추가 하면, ZZ로 나오는 지역이 있어서.. 제외 하셔도 괜찮습니다. 그리고 지역이 없으면 빈값이 나옵니다.

PHP용 클래스가 필요 하신 분은
여기로 가서 참조 하세요.
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

요즘 codeingiter에서 matchbox를 사용해서 모듈화를 해서 제작을 하고 있습니다.
그런데 0.9.4 이후로 업데이트가 안 되고 있네요 -_-;;
matchbox를 사용할 경우 form_validation 라이브러리를 사용 할 경우..
에러 체크가 표시되지 않는 문제가 있습니다.


위 파일을 받아서 확장자를 변경 후, /application/libraries 폴더에 넣어 주시면 됩니다.

참고 : http://codeigniter.com/forums/viewthread/95755

더보기


저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

codeigniter를 사용하는데, MVC모델로 되어 있지만, 그 MVC모델이 지정된 폴더에 같은 작업을 할려니 부담 스러울 때가 많습니다. 그런데 matchbox를 사용하면 이런 형태를 모듈화 해서 작업을 할 수 있게 됩니다.

- application
   - controllers
   - models
   - views


이렇던것을

- application
   - modules
      - example
         - controllers
         - models
         - views
      - example2
         - controllers
         - models
         - views


이런 식으로 나눠서 사용 할 수 있습니다. 써보니까.. 더 길어 지네요.. 더 복잡해 보이나요? -_-;
하지만, 이렇게 해서 얻어지는 장점은 각 모듈로 분리해서 작업을 해서 좀더 깔끔하게 소스를 관리 할 수 있습니다. 소스의 복잡도도 떨어 뜨릴수 있구요.

설치하기

다운로드 : http://code.google.com/p/matchbox/
위 주소로 가서 matchbox를 받아 옵니다. 지금 이 글을 포스팅 하는 시점에서는 0.9.4가 최신이라서 그걸 받아서 설치를 했습니다.

설치 방법은 허무하게 간단합니다.
압축을 풀면 나오는 config폴더와 library폴더를 복사해서 넣어 주시면 됩니다. 그리고 나서 application 폴더에 modules라는 폴더를 만드시면 됩니다. 그리고 위에 네모안에 들어 있는 같은 구조를 구성해 주시면 됩니다.

위와 같이 넣고 나서 실행을 해 보시려면,

http://www.example.com/index.php/module_name/parameter
http://www.example.com/index.php/module_controller_method/parameter

두가지를 시도해 보시면 됩니다.

아래와 같은 파일 구조가 있고,
- application
   - modules
      - example
         - controllers
             example.php
             test.php
        - views
             example_view.php
             test_view.php
             test_view2.php

example.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Example extends Controller {
    function __construct()
    {
        parent::Controller();
    }
   
    function index()
    {
        $this->load->module_view('example', 'example_view');
    }

    function test2()
    {
        $this->load->module_view('example', 'test_view');
    }
   
}

test.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Test extends Controller {
    function __construct()
    {
        parent::Controller();
    }
   
    function index()
    {
        $this->load->module_view('example', 'test_view');
    }
}

http://www.example.com/index.php/test2

위와 같이 같은 example.php와 test.php가 존재 한다면, 주소를 부를때,
먼저 test2.php 이라는 파일을 찾고 없으면 모듈 이름과 같은 example.php 파일에서 test2 method를 찾습니다.
그러니까.. 실제로는 /application/controllers에 파일이 들어 있을 때와 거의 비슷하게 동작을 하신다고 생각 하시면 됩니다.

그리고 설치 후 주의 하셔야 할 점은 autoload.php 설정에 language 라이브러리를 호출 하시면, 재 선언 했다고 메시지가 출력 됩니다. 기존 작업에 language를 작업 하셨다면 빼주시면 됩니다.
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하



firePHP는 firefox에서 사용되는 fireBug의 애드온 입니다. php프로그래밍을 할 때 디버깅을 도와 줍니다.
아래는 요즘 제가 사용하고 있는 codeIgniter에서 firePHP를 사용하는 방법입니다.

준비물.

  1. FireFox : 웹브라우저
  2. fireBug : 부가기능
  3. firePHP : 부가기능
  4. firePHP core library : PHP 라이브러리.


설치

firefox를 설치 하시고 fireBug와 firePHP를 설치해 줍니다.

그러면, 하단에 바퀴벌레 주황색 바퀴벌레 아이콘이 생깁니다. 그 아이콘을 클릭후 Net과 콘솔(Console)을 enable상태로 바꿔 줍니다.

다운 받은 firePHP core library의 압축을 풀어 줍니다. 그리고 system/application/libraries 디렉토리에 FirePHP.class.php파일을 복사 해 주고, 파일의 이름을 firephp.php로 바꿔 줍니다. .


사용법

  • $this->firephp->log($myvariable) : FireBug console에 $myvarriable 값의 덤프를 보냄.
  • $this->firephp->warn($myvariable) : FireBug console에 $myvarriable 값의 덤프를 warning으로 분류해서 보냄.
  • $this->firephp->error($myvariable) : FireBug console에 $myvarriable 값의 덤프를 error으로 분류해서 보냄.


예제

아래와 같은 코드를 넣어 주고 fireBug에서 확인하면 다음과 같이 배열의 값이 보이게 됩니다.
<?php $this->load->library('firephp'); $myvariable = array ( 'language' => 'PHP', 'database' => 'MySQL', 'blogging platform' => 'WordPress', 'post' => 'CodeIgniter and FirePHP', ); $this->firephp->log($myvariable); ?>




특정 IP에서만 firePHP를 사용하기


firePHP의 메시지를 끄려면 $this->firephp->setEnabled(FALSE)를 해 주면 됩니다. 하지만, 특정 IP에서만 firePHP를 사용하고 싶다면 아래와 같은 코드를 넣어 주면 됩니다.
<?php if($this->input->ip_address() =='1.2.3.4') { $this->firephp->setEnabled(TRUE); } else { $this->firephp->setEnabled(FALSE); } ?>

원본 : http://speedtech.it/2009/05/debugging-a-codeigniter-application-with-firephp/
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

[1부]에 이어서 시작합니다.

4. CI 경로 설정하기.

CI를 시작하기 위해서는 기본 경로를 설정해 줘야 합니다.
system/application/config/config.php 파일을 열어서... 'base_url'을 아래와 같이 수정해 줍니다.

$config['base_url'] = "http://localhost/ci/";

정상적으로 설치가 되었으면 아래와 같이 나옵니다.





5. MySQL 연결 설정하기.


데이터 베이스의 연결이 설정 되어 있는데로 설정르 합니다.
파일은 system/application/config/database.php 입니다.
이번 포스팅에서 사용할 db는 helloworld이고 사용자아이디와 암호는 "root"로 했습니다.

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "root";
$db['default']['database'] = "helloworld";
$db['default']['dbdriver'] = "mysql";

이제는 어플리케이션을 시작하면 항상 DB를 연결하도록 설정을 해 보겠습니다. system/application/config/autoload.php 파일을 열어서 보시면, $autoload['libraries']에 array('')가 비어 있습니다. 거기에 아래와 같이 database를 추가해 주세요.
$autoload['libraries'] = array('database');
먼저 MySQL에서 helloworld라는 데이터베이스를 생성합니다. 그리고 데이터 베이스가 비어 있으면 허전하죠? 데이터베이스를 채워 보겠습니다. 아래의 쿼리를 실행해서 데이터 베이스를 입력합니다.
CREATE TABLE `data`
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(255) NOT NULL,
  `text` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

INSERT INTO `data` (`title`, `text`) VALUES('Hello World!', 'CodeIgniter is a powerful PHP framework with a very small footprint, built for PHP coders who need a simple and elegant toolkit to create full-featured web applications. If you''re a developer who lives in the real world of shared hosting accounts and clients with deadlines, and if you''re tired of ponderously large and thoroughly undocumented frameworks');


6. CI Controller 만들기.


처음에 사용할 Controller를 지정해 줘야 합니다.
다시 system/application/config/routes.php 파일을 엽니다. 여기 기본값은 welcome이라도 되어 있을 겁니다. 이걸 helloworld로 변경합니다.

$route['default_controller'] = "helloworld";

위와 같이 설정을 해 주시면, 기본 컨트롤러가 기존의 system/application/controllers/welcome.php파일이 아닌 system/application/controllers/helloworld.php 파일을 읽게 됩니다. 그럼 이제, system/application/controllers/helloworld.php 파일을 만들고, 아래와 같이 입력해 주세요.

<?php
class Helloworld extends Controller{ function index() { $this->load->model('helloworld_model'); $data['result'] = $this->helloworld_model->getData(); $data['page_title'] = "CI Hello World App!"; $this->load->view('helloworld_view',$data); } } ?>

여기서 주의점은 클래스의 이름의 첫 글자는 대문자로 해야 합니다.

이전 개념도 그림에서 설명들였듯이 index.php에서는 이 controller 페이지를 거쳐서 model과 view를 연결합니다.
$this->load->model('helloworld_model')을 불러서 db의 데이터를 제어하고, 마지막은 $this->load->view('helloworld_view', $data)를 통해서 view에 있는 html과 데이터을 출력해 주는 형식입니다.


7. CI Model 만들기


여기서는 database를 연결해서 데이터를 읽어 오는 클래스 입니다. 여기서는 액티브 레코드(Active Record Class)를 이용해서 제어를 해 보겠습니다. 먼저 system/application/models 디렉토리에 helloworld_model.php 파일을 만듭니다. 그리고 아래와 같은 코드를 입력해 줍니다.
<?php
class Helloworld_model extends Model {

    function Helloworld_model()
    {
        // 모델 생성자 호출
        parent::Model();
    }
    
    function getData()
	{
		// data테이블의 모든 레코드를 불러 옴.
		$query = $this->db->get('data');
		
		if ($query->num_rows() > 0)
		{
			return $query->result();
		}else{
			show_error('Database is empty!');
		}
	}
}
?>
위 코드는 data 테이블의 모든 데이터를 블러와서 리턴하는 코드 입니다. 이전 챕터의 controller를 getData의 리턴값으로 이 데이터베이스의 결과 값을 받게 됩니다.


8. View 만들기


이제는 이 결과 값을 보여줄 페이지를 제작합니다. system/application/views 폴더에 helloworld_view.php 파일을 만들어 줍니다. 그리고 아래와 같은 내용을 넣습니다.
<html>
	<head>
		<title><?=$page_title?></title>
	</head>
	<body>
		<?php foreach($result as $row):?>
		<h3><?=$row->title?></h3>
		<p><?=$row->text?></p>
		<br />
		<?php endforeach;?>
	</body>
</html>
여기서는 foreach문으로 돌면서 data 테이블에 있는 내용을 출력해 줍니다. 지금은 1개 밖에 들어 있지 않아서 1개만 출력 되는데.. 추가로 입력이 되어 있으면 더 많은 데이터를 출력 합니다.
view는 기본적으로 controller에서 보내 준 값을 출력만 하는 형태라고 생각하시면 됩니다. 물론 php코딩도 할 수 있지만, 기본적인 출력만을 제작하는 것을 권장한다고 합니다.


9. 보기 좋은 주소로 만들어 주기


그러면 주소는 어떻게 될까요?
http://localhost/ci/index.php/helloworld
이런 주소 입니다.
지금은 기본 route를 helloworld.php로 해 뒀으니까.
http://localhost/ci/
이렇게만 하면 helloworld.php의 화면을 볼 수 있습니다. 그러면 초기에 있던 welcome.php를 보고 싶으면 어떻게 해야 할까요?
http://localhost/ci/index.php/welcome
이렇게 하시면 됩니다. 그런데.. index.php가 영 걸리죠? 그럼 이걸 과감하게 없애 보겠습니다.

먼저 appache에 rewrite 엔진이 설정 되어 있어야 합니다. 그럼, CI가 설치된 폴더에 .htaccess 파일을 만들고 아래와 같은 내용을 입력해 줍니다.

RewriteEngine on
RewriteCond $1 !^(index\.php|/img|/js|/css|/robots\.txt|/favicon\.ico)
RewriteRule ^(.*)$ /ci/index.php/$1 [L]

그리고 system/application/config/config.php 파일에 index_page의 설정 값을 지워 줍니다.

$config['index_page'] = '';

이렇게 해 주면.
http://localhost/ci/helloworld



index.php를 중간에 넣지 않고도 원하는 페이지를 부를 수 있습니다.


10. 예제 파일 및 마무리


위 예제 파일 소스 입니다. CI를 다운 받으신 후 덮어서 쓰기 해서 사용하시면 됩니다.
DB에 데이터를 입력하고, DB의 설정 만 바꾸시면 동작을 바로 동작 할 껍니다.

이 외에도 CodeIgniter의 소스가 많이 공개 되어 있습니다.


앞으로 CodeIgniter가 많이 보급 되어서, PHP Framework에서 확고한 자리를 차지 했으면 좋겠네요.
그럼 이쯤으로 마무리 할랍니다~ ^^*

좋은 하루 되세요~

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

지난번 포스티에서 PHP Framework를 비교 한적이 있습니다.
그 4개의 Framework중에서 제 마음에 드는건 CodeIgniter더 군요. 그리고 몇 일 공부 한 짧은 지식을 정리해 볼까 합니다.


프레임워크를 왜 사용하는가?

프레임워크는 재사용 가능한 클래스와 개발 시간을 단축 할 수 있는 기능을 제공합니다. 프레임워크를 통해서 개발 함으로 인해서 원치 않은 코드의 개발을 최소화 할 수 있다. codeIgniter의 예로 들면, database 접근,email 전송, form 데이터검증(validation),세션관리, 이미지 처리, XML-RPC 등 이 외에도 다양한 기능을 제공합니다. 이런 기능들을 특별히 구현 할 필요 없이 프레임워크에서 제공해 주는 것을 사용하면 됩니다. 이런 것을 통해서 많은 개발 시간을 단축 시킬 수 있습니다.



CodeIgniter를 선택한 이유.

CodeIgniter는 매우 가볍은 프레임워크입니다. PHP Framework 비교 글에서 언급하였다 시피 codeIgniter는 PHP Framework중에서 최고의 속도를 자랑합니다.
학습이 쉽습니다. 뿐만 아니, 친절한 도움말이 제공됩니다.(한글번역본도 있습니다.).
MVC 패턴을 지원합니다. 비니지스로직 계층과 표현계층이 분이 되어 있고 디자이너와 협업시에는 템플릿파일에 최소한의 코드로 제작 할 수 있습니다.
그리고 무료 입니다 ^ ^;; 가장 중요한가요?

아래 내용은 CodeIgniter 제공하는 기능 목록 입니다. CodeIgniter 사용자 가이드에서 퍼왔습니다 ^^;;;.

  • 모델-뷰-컨트롤러 기반
  • PHP 4 에 적합
  • 엄청 가벼움
  • 여러플렛폼을 지원하는 완벽한 데이터베이스 클래스들
  • 액티브레코드(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 라우팅
  • 후킹,클래스확장,플러그인 지원
  • 방대한 헬퍼 라이브러리

이런 엄청난 기능을 제공해 주는데, 사용 안 할 수 없겠죠?
그럼 시작해 보겠습니다.


1. CodeIgniter 다운로드

당연히 다운로드 받아야 겠죠? CodeIgniter 홈페이지에 가서 받으시면 됩니다. 현재 가장 최신은 1.7.1입니다.



2. 설치 및 구조 좀 살펴 보기.

CodeIgniter의 압축을 푸시면 위와 같은 구조가 나옵니다. 참 많죠? -_-;;
이 파일들은 Apache에 PHP가 설치되고, MySQL이 설치된 환경의 디렉토리에 복사 하시면 됩니다. 여기서는 ci라는 폴더를 만들어서 복사해서 넣겠습니다.

그러면, 이 많은 폴더에 뭐가 들어 있는지 간략하게 적어 보겠습니다.
아래부터는 CodeIgniter를 CI라고 쓰겠습니다. 코드이그나이터 라고 쓸려니.. 영타도 길고 해서.. 줄여서 쓸랍니다.
  • system : CI 작업을하게 되는 모든 파일입니다.
    • application : 응용 프로그램 폴더 입니다. 현재 작업 하시는 공간이라고 보시면 좋습니다.
      • config : 응용프로그램의 환경설정. 자동로드 및 데이터베이스 연결, 라우트등 대부분의 설정을 합니다.
      • controllers :  응용프로그램 컨트롤.
      • errors : 응용프로그램에 대한 오류 페이지 템플릿.
      • helpers : 헬퍼 저장소.
      • hooks : CI의 코어 파일을 변경하지 않고 작동방식을 변경할때 사용
      • language : 다국어 지원을 위한 언어 폴더.
      • libraries : 응용프로그램 사용자 라이브러리.
      • models : 모델. 데이터베이스와 연동하여 사용하기 위한 클래스.
      • views :  뷰. 웹페이지 디자인 및 템플릿.
    • cache : 캐시 라이브러리에 의해 생성된 캐시가 저장 됨.
    • codeigniter :  codeingiter
    • database : 데이터베이스 드라이버와 클래스.
    • fonts : 이미지 편집 라이브러에 사용할 글꼴.
    • helpers : CI에서 제공하는 기본 핼퍼.
    • language : CI에서 기본제공되는 언어
    • libraries : 라이브러리
    • logs : 지정된 로그가 기록 됨.
    • plugin : 플러그인
    • scaffolding : 데이터베이스 조작 클래스.
  • user_guide : 사용자 도움말. 홈페이지에 있는 도움말과 동일한 내용입니다.
  • index.php :  CI의 시작점. 시스템 및 응용프로그램의 폴더 이름을 변경 할 수 있습니다.


3. CI 동작 개념


먼저 CI 한글 사용자 가이드의 내용을 보시겠습니다.

  1. The index.php 는 프론트콘트롤러(front controller)로 동작하여 CI가 동작하기 위한 기반리소스들을 초기화 합니다.
  2. 라우터모듈(Routing)은 http 요청을 분석하여 어떤 동작을 해야할지를 결정합니다.
  3. 캐쉬파일이 있다면 그파일을 바로 브라우저로 보내고 일반적인 동작절차는 무시합니다.
  4. 보안모듈(Security)은 프로그램 컨트롤러가 로딩 되기전에 HTTP 요청및 어떤 사용자 전송데이터든지 모두 필터링합니다.
  5. 컨트롤러(Application controller)는 사용자 요청을 처리하기 위해 모델을 로드하고,코어라이브러리,플러그인,헬퍼 및 필요한 다른 리소스들을 로드 합니다.
  6. 최종적으로 뷰모듈(View)이 렌더링되어 브라우저로 전송됩니다. 캐싱이 활성화 되어이다면 먼저 캐쉬(Cashing)하여 다음번 요청에 사용할 수 있도록 합니다.

위와 같은 처리를  거쳐서 어플리케이션이 돌아 가게 됩니다. 참 복잡하죠? ^^;; 하지만 걱정하지 마세요.. 대부분의 기능은 프레임워크에서 담당해 주고 있습니다. 개발자는 약간의 손만 거들 뿐~ ^^;


이번 포스팅에서는 이 정도의 간단한 구조라고 생각하시면 됩니다. Controller를 제작해서 Model을 통해서 DataBase의 정보를 빼오고 View를 통해서 출력 하는 구조 입니다.

// 아이고 -_-;;; 아직 코딩 시작도 못 했는데.. 생각보다 내용이 길어 졌네요 ^^;; 코딩은 다음글로~ 졸리네요 ^^
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하