백엔드 개발 PHP 튜토리얼 CI框架学习笔记(二) -入口文件index.php_php实例

CI框架学习笔记(二) -入口文件index.php_php实例

Jun 07, 2016 pm 05:16 PM
CI 프레임워크

  上一节(CI框架学习笔记(一) - 环境安装、基本术语和框架流程)中,我们提到了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框架中,很多配置文件都是通过这种方式引入的,因此ENVRIONMENT对于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(系统system目录名)
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被称为bootstrap 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';
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP에서 CI 프레임워크를 사용하는 방법은 무엇입니까? PHP에서 CI 프레임워크를 사용하는 방법은 무엇입니까? Jun 01, 2023 am 08:48 AM

네트워크 기술의 발전으로 PHP는 웹 개발을 위한 중요한 도구 중 하나가 되었습니다. 인기 있는 PHP 프레임워크 중 하나인 CodeIgniter(이하 CI)도 점점 더 많은 관심과 사용을 받고 있습니다. 오늘은 CI 프레임워크를 활용하는 방법에 대해 살펴보겠습니다. 1. CI 프레임워크 설치 먼저 CI 프레임워크를 다운로드하여 설치해야 합니다. CI 공식 홈페이지(https://codeigniter.com/)에서 최신 버전의 CI 프레임워크 압축 패키지를 다운로드하세요. 다운로드가 완료되면 압축을 풀어주세요

PHP에서 CI 프레임워크를 사용하는 방법 PHP에서 CI 프레임워크를 사용하는 방법 Jun 27, 2023 pm 04:51 PM

PHP는 웹 개발에 널리 사용되는 인기 있는 프로그래밍 언어입니다. CI(CodeIgniter) 프레임워크는 PHP에서 가장 널리 사용되는 프레임워크 중 하나입니다. 이는 기성 도구 및 기능 라이브러리의 전체 세트는 물론 일부 인기 있는 디자인 패턴을 제공하여 개발자가 웹 애플리케이션을 보다 효율적으로 개발할 수 있도록 합니다. 이 기사에서는 CI 프레임워크를 사용하여 PHP 애플리케이션을 개발하는 기본 단계와 방법을 소개합니다. CI 프레임워크의 기본 개념과 구조를 이해합니다. CI 프레임워크를 사용하기 전에 몇 가지 기본 개념과 구조를 이해해야 합니다. 아래에

PHP에서 CI4 프레임워크를 사용하는 방법은 무엇입니까? PHP에서 CI4 프레임워크를 사용하는 방법은 무엇입니까? Jun 01, 2023 pm 02:40 PM

PHP는 널리 사용되는 서버측 스크립팅 언어이며 CodeIgniter4(CI4)는 웹 애플리케이션을 구축하는 빠르고 우수한 방법을 제공하는 인기 있는 PHP 프레임워크입니다. 이 기사에서는 CI4 프레임워크를 사용하여 뛰어난 웹 애플리케이션을 개발하는 방법을 단계별로 안내해 드립니다. 1. CI4 다운로드 및 설치 먼저 공식 웹사이트(https://codeigniter.com/downloa)에서 다운로드해야 합니다.

PHP의 CI 프레임워크 가이드 PHP의 CI 프레임워크 가이드 May 22, 2023 pm 07:10 PM

인터넷이 발전하고 인터넷이 사람들의 삶에 지속적으로 통합됨에 따라 네트워크 애플리케이션의 개발이 점점 더 중요해지고 있습니다. 잘 알려진 프로그래밍 언어인 PHP는 인터넷 애플리케이션 개발에 선호되는 언어 중 하나가 되었습니다. 개발자는 수많은 PHP 프레임워크를 사용하여 개발 프로세스를 단순화할 수 있으며, 가장 널리 사용되는 프레임워크 중 하나는 CodeIgniter(CI) 프레임워크입니다. CI는 강력한 PHP 웹 애플리케이션 프레임워크로, 가볍고 사용하기 쉬우며 성능이 최적화되어 개발자가 빠르게 구축할 수 있다는 특징을 가지고 있습니다.

CI 프레임워크에 CSS를 도입하는 방법 CI 프레임워크에 CSS를 도입하는 방법 Dec 26, 2023 pm 05:20 PM

CI 프레임워크에 CSS 스타일을 도입하는 단계는 다음과 같습니다. 1. CSS 파일을 준비합니다. 2. CSS 파일을 CI 프레임워크 프로젝트의 적절한 위치에 저장합니다. 3. CSS 스타일을 사용해야 하는 페이지에 CSS를 도입합니다. HTML <link> 태그 파일을 통해 4. HTML 요소에 CSS 클래스 또는 ID 이름을 사용하여 해당 스타일을 적용합니다.

CI 프레임워크에서 CSS 스타일을 참조하는 단계에 대한 자세한 설명 CI 프레임워크에서 CSS 스타일을 참조하는 단계에 대한 자세한 설명 Jan 16, 2024 am 09:28 AM

튜토리얼: CI 프레임워크에 CSS 스타일을 도입하기 위한 세부 단계, 특정 코드 예제가 필요합니다. 소개: 스타일은 웹 애플리케이션 개발에 있어 중요한 부분입니다. CSS(Cascading Style Sheets)를 사용하여 웹페이지를 아름답게 만들고 더 나은 사용자 경험을 제공하세요. CodeIgniter(CI) 프레임워크를 사용하여 개발할 때 CSS 스타일을 올바르게 도입하는 방법은 특히 중요합니다. 이 문서에서는 CSS 스타일을 CI 프레임워크에 도입하는 자세한 단계를 소개하고 특정 코드 예제를 제공합니다. 1단계: 먼저 CSS 파일 만들기,

CI 프레임워크를 사용하여 웹 페이지에 CSS 스타일을 도입하는 단계 CI 프레임워크를 사용하여 웹 페이지에 CSS 스타일을 도입하는 단계 Jan 16, 2024 am 09:20 AM

CI 프레임워크에 CSS 스타일을 도입하는 단계에는 특정 코드 예제가 필요합니다. CI(CodeIgniter) 프레임워크는 효율적인 웹 애플리케이션을 구축하는 데 널리 사용되는 인기 있는 PHP 개발 프레임워크입니다. 웹 애플리케이션을 개발할 때 아름다운 사용자 인터페이스는 중요한 고려 사항입니다. CSS 스타일을 사용하면 웹 애플리케이션 인터페이스를 최적화하고 개인화하여 사용자에게 더 나은 경험을 제공할 수 있습니다. CI 프레임워크에서 CSS 스타일을 도입하려면 일반적으로 특정 코드 예제와 함께 다음 단계가 필요합니다. 1 단계:

PHP에서 CI6 프레임워크를 사용하는 방법은 무엇입니까? PHP에서 CI6 프레임워크를 사용하는 방법은 무엇입니까? Jun 01, 2023 pm 11:10 PM

PHP는 매우 인기 있는 웹 개발 언어이고 CodeIgniter(CI)는 매우 인기 있는 PHP 프레임워크입니다. CodeIgniter는 많은 유용한 기능과 기능을 제공하여 개발자에게 큰 편의성을 제공합니다. 이번 글에서는 CI6 프레임워크를 사용하는 방법을 살펴보겠습니다. CI6 설치 CI6 사용을 시작하려면 먼저 설치 프로세스를 완료해야 합니다. 먼저 CodeIgniter 공식 웹사이트에서 CI6 압축 패키지를 다운로드해야 합니다. 그런 다음 이 파일의 압축을 풀고 다음 위치에 넣으세요.

See all articles