CI 프레임 워 크 학습 노트(2)-입구 파일 index.php

지난 절(CI 프레임 워 크 학습 노트(1)-환경 설치,기본 용어 와 프레임 워 크 프로 세 스)에서 우 리 는 CI 프레임 워 크 의 기본 절 차 를 언급 했 습 니 다.여기에 절차 도 를 다시 붙 여 참고 하 십시오.

CI 프레임 워 크 의 입구 파일 로 서 원본 코드 를 읽 으 면 자 연 스 럽 게 시 작 됩 니 다.소스 코드 를 읽 는 과정 에서 우 리 는 한 줄 한 줄 해석 하지 않 고 핵심 적 인 기능 과 실현 만 설명 한다.
1.프로그램 환경 설정

define('ENVIRONMENT', 'development');
여기 development 는 당신 이 좋아 하 는 환경 이름(예 를 들 어 dev,test)일 수 있 습 니 다.이에 대응 하 는 것 은 아래 switch case 코드 블록 에서 설정 한 환경 에 대해 잘못된 통 제 를 해 야 합 니 다.그렇지 않 으 면 CI 프레임 워 크 는 해당 하 는 환경 을 설정 하지 않 았 다 고 생각 하고 프로 세 스 를 종료 하고 해당 하 는 오류 정 보 를 제공 합 니 다.

default:   exit('The application environment is not set correctly.');
왜 처음부터 ENVIRONMENT 를 설정 해 야 합 니까?이 는 CI 프레임 워 크 의 많은 구성 요소 가 ENVIRONMENT 설정 에 의존 하기 때 문 입 니 다.system 에서 ENVIRONMENT 를 참조 하 는 곳 을 살 펴 보 겠 습 니 다.

이 를 통 해 알 수 있 듯 이 많은 구성 요소 들 이 ENVIRONMENT 에 의존 하고 있 습 니 다.예 를 들 어 system/config/Common.php 를 보면 설정 파일 을 도입 하 는 코드 가 있 습 니 다.이렇게 이 루어 집 니 다.

if ( ! defined('ENVIRONMENT') OR ! file_exists($file_path = APPPATH.'config/'.ENVIRONMENT.'/config.php'))
{
  $file_path = APPPATH.'config/config.php';
}
CI 프레임 워 크 에 서 는 이러한 방식 으로 많은 프로필 이 도입 되 기 때문에 ENVRION MENT 는 CI 프레임 워 크 가 올 바 르 게 실 행 될 때 필수 적 이 므 로 시작 할 때 ENVIRONMENT 를 설정 해 야 합 니 다.ENVIRONMENT 를 설정 하 는 장점 중 하 나 는 시스템 코드 를 수정 하지 않 고 시스템 설정 을 편리 하 게 전환 할 수 있다 는 것 이다.예 를 들 어 시스템 이 테스트 단계 에 들 어 갈 때 database 는 테스트 데이터베이스 로 설정 되 고 시스템 테스트 가 끝 날 때 database 는 온라인 데이터 베이스 로 전환 합 니 다.이것 은 마치 하나의 스위치 로 시스템 의 환경 전환 을 제어 하 는 것 과 같 아서 자연히 매우 편리 하 다.
2.시스템 디 렉 터 리 와 응용 프로그램 디 렉 터 리 설정
CI 프레임 워 크 는 시스템 의 핵심 소스 코드 와 응용 프로그램 코드 를 분리 해서 배치 할 수 있 습 니 다.그러나 시스템 의 system 폴 더 와 application 폴 더 를 설정 해 야 합 니 다.(마찬가지 로 폴 더 이름 은'system'과'application'을 사용 하지 않 고 합 법 적 인 폴 더 이름 일 수 있 습 니 다.)

$system_path = 'system';
$application_folder = 'application';
다음은 다음 코드 가 있 습 니 다.

if (defined('STDIN'))
{
   chdir(dirname(__FILE__));
}
이 코드 는 무엇 입 니까?우선,STDIN,STDOUT,STDERR 은 PHP 가 CLI(Command Line Interface)모드 로 실행 되 는 세 개의 상수 로 정 의 된 것 이다.이 세 개의 상수 가 Shell 의 stdin,stdout,stdout 과 유사 하 다.각각 PHP CLI 모드 에서 의 표준 입력,표준 출력 과 표준 오류 흐름 이다.즉,이 세 줄 코드 는 명령 행 모드 에서 CI 프레임 워 크 가 정상적으로 작 동 할 수 있 도록 하기 위 한 것 이다.PHP CLI 에 대한 자세 한 내용 은 다음 과 같 습 니 다.http://www.php-cli.com/
3.system 디 렉 터 리 의 정확성 검증 과 application 디 렉 터 리 검증
(1).system 디 렉 터 리 의 정확성 검증
Realpath 는 디 렉 터 리 나 파일 의 절대 디 렉 터 리 이름 을 되 돌려 줍 니 다(마지막/없 음)

if (realpath($system_path) !== FALSE)
{
  $system_path = realpath($system_path).'/';
}
$system_path = rtrim($system_path, '/').'/';
if ( ! is_dir($system_path))
{ 
  exit("xxxxxxxx");
}
몇 개의 정 의 된 상수(PATH 끝 에 있 는 상수 가 디 렉 터 리 경 로 를 표시 하고 DIR 끝 에 있 는 변 수 는 디 렉 터 리 이름 을 표시 합 니 다):
a.SELF(index.php 파일 을 가리 키 는 말)
b.EXT(deprecated,폐기,관심 필요 없 음)
c.BASEPATH(system 폴 더 의 경로)
d.FCPATH(전단 컨트롤 러 의 경로)
e.SYSDIR(시스템 디 렉 터 리 이름)
f.APPPATH(응용 프로그램 경로)
모든 정 의 된 상수 보기:

Print_r(get_defined_constants());

(2)application 의 디 렉 터 리 검증.
코드 가 비교적 간단 해서 너무 많은 설명 을 하지 않 습 니 다.

if (is_dir($application_folder))
{
  define('APPPATH', $application_folder.'/');
}
else
{
  if ( ! is_dir(BASEPATH.$application_folder.'/'))
  {
    exit("Your application folder path does not appear to be set correctly. Please open the following file and correct this: ".SELF);
  }

  define('APPPATH', BASEPATH.$application_folder.'/');
}
입구 파일 의 마지막 줄 에 CodeIgniter.php 를 도입 합 니 다.CodeIgniter.php 는 boottstrap file 이 라 고 불 린 다.즉,안내 파일 로 CI 프레임 워 크 실행 프로 세 스 의 핵심 파일 이다.

require_once BASEPATH.'core/CodeIgniter.php';
요약 하면 index.php 는 복잡 한 작업 을 많이 하지 않 고 하나의 후방 근무 와 유사 하여 CI 프레임 워 크 의 운행 에 일련의 설정 매개 변수 와 정확성 검증 을 제공 했다.이런 설정 과 검증 은 CI 프레임 워 크 가 정상적으로 운행 할 수 있 는 관건 이다.
마지막 으로 관례 에 따라 전체 파일 의 원본 코드(주석 판 간소화)를 붙 입 니 다.

<?php

define('ENVIRONMENT', 'development');

if (defined('ENVIRONMENT'))
{
  switch (ENVIRONMENT)
  {
    case 'development':
      error_reporting(E_ALL);
    break;
  
    case 'testing':
    case 'production':
      error_reporting(0);
    break;

    default:
      exit('The application environment is not set correctly.');
  }
}

/*
 * SYSTEM FOLDER NAME
 */
$system_path = 'system';

/*
 * APPLICATION FOLDER NAME
 */
$application_folder = 'application';

/*
 * Resolve the system path for increased reliability
 */
if (defined('STDIN'))
{
  chdir(dirname(__FILE__));
}

if (realpath($system_path) !== FALSE)
{
  $system_path = realpath($system_path).'/';
}

$system_path = rtrim($system_path, '/').'/';

if ( ! is_dir($system_path))
{
  exit("xxxxxxxx");
}

/*
 * set the main path constants
 */
// The name of THIS file
define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));

// this global constant is deprecataaed.
define('EXT', '.php');

// Path to the system folder
define('BASEPATH', str_replace("\\", "/", $system_path));

// Path to the front controller (this file)
define('FCPATH', str_replace(SELF, '', __FILE__));

// Name of the "system folder"
define('SYSDIR', trim(strrchr(trim(BASEPATH, '/'), '/'), '/'));

// The path to the "application" folder
if (is_dir($application_folder))
{
  define('APPPATH', $application_folder.'/');
}
else
{
  if ( ! is_dir(BASEPATH.$application_folder.'/'))
  {
    exit("Your application folder path does not appear to be set correctly. Please open the following file and correct this: ".SELF);
  }

  define('APPPATH', BASEPATH.$application_folder.'/');
}

require_once BASEPATH.'core/CodeIgniter.php';

좋은 웹페이지 즐겨찾기