首頁 後端開發 php教程 CI框架学习笔记(二) -入口文件index.php_PHP

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

May 31, 2016 pm 07:28 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 Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

php如何使用CI框架? php如何使用CI框架? Jun 01, 2023 am 08:48 AM

隨著網路技術的發展,PHP成為了Web開發的重要工具之一。而其中一款流行的PHP框架——CodeIgniter(以下簡稱CI)也得到了越來越多的關注與使用。今天,我們就來看看如何使用CI框架。一、安裝CI框架首先,我們需要下載CI框架並安裝。在CI的官網(https://codeigniter.com/)上下載最新版本的CI框架壓縮包。下載完成後,解壓縮

PHP中如何使用CI框架 PHP中如何使用CI框架 Jun 27, 2023 pm 04:51 PM

PHP是一種流行的程式語言,廣泛應用於Web開發。 CI(CodeIgniter)框架是PHP中最受歡迎的框架之一,它提供了一整套現成的工具和函數庫,以及一些流行的設計模式,讓開發人員能夠更有效率地開發Web應用程式。本文將介紹使用CI框架開發PHP應用程式的基本步驟和方法。了解CI架構的基本概念和結構在使用CI架構之前,我們需要先了解一些基本的概念和結構。下

php如何使用CI4框架? php如何使用CI4框架? Jun 01, 2023 pm 02:40 PM

PHP是一種廣泛使用的伺服器端腳本語言,而CodeIgniter4(CI4)是一個流行的PHP框架,它提供了一種快速而優秀的方法來建立Web應用程式。在這篇文章中,我們將透過引導您了解如何使用CI4框架,讓您開始使用此框架來開發出眾的網路應用程式。 1.下載並安裝CI4首先,您需要從官方網站(https://codeigniter.com/downloa

PHP中的CI框架指南 PHP中的CI框架指南 May 22, 2023 pm 07:10 PM

隨著網路的發展和不斷地融入人們的生活,網路應用的開發變得越來越重要。 PHP作為一種眾所周知的程式語言,已經成為了開發網路應用程式的首選語言之一。而開發人員可以使用眾多的PHP框架來簡化開發過程,其中最受歡迎的之一是CodeIgniter(CI)框架。 CI是一個強大的PHPweb應用框架,它擁有輕量級、簡單易用、優化性能等特點,可以讓開發人員快速構建

ci框架如何引入css ci框架如何引入css Dec 26, 2023 pm 05:20 PM

CI框架中引入CSS樣式的步驟如下:1、準備CSS檔案;2、將CSS檔案儲存在CI框架專案的適當位置;3、在需要使用CSS樣式的頁面中,透過HTML的<link>標籤引入CSS文件;4、在HTML元素中使用CSS類別或ID名稱來套用對應的樣式即可。

使用CI框架向網頁引入CSS樣式的步驟 使用CI框架向網頁引入CSS樣式的步驟 Jan 16, 2024 am 09:20 AM

CI框架引入CSS樣式的步驟,需要具體程式碼範例CI(CodeIgniter)框架是一種流行的PHP開發框架,被廣泛用於建立高效的Web應用程式。在開發Web應用程式時,美觀的使用者介面是一個重要的考慮因素。使用CSS樣式可以達到Web應用程式介面的最佳化和個人化,讓使用者獲得更好的體驗。在CI框架中,引入CSS樣式通常需要以下步驟,並附帶具體的程式碼範例。步驟1:

詳解CI框架中引用CSS樣式的步驟 詳解CI框架中引用CSS樣式的步驟 Jan 16, 2024 am 09:28 AM

教學:在CI框架中引入CSS樣式的詳細步驟,需要具體程式碼範例引言:在開發網頁應用程式中,樣式是至關重要的一部分。使用CSS(層疊樣式表)可以美化網頁並提供更好的使用者體驗。而在使用CodeIgniter(CI)框架進行開發時,如何正確引入CSS樣式就顯得格外重要。本文將介紹CI框架中引入CSS樣式的詳細步驟,並為您提供具體的程式碼範例。步驟一:建立CSS檔案首先,

php如何使用CI6框架? php如何使用CI6框架? Jun 01, 2023 pm 11:10 PM

PHP是一門非常流行的網頁開發語言,而CodeIgniter(CI)則是一款非常受歡迎的PHP框架。 CodeIgniter提供了許多有用的功能和特性,為開發人員帶來了很大的便利。在本文中,我們將探討如何使用CI6框架。安裝CI6在開始使用CI6之前,必須先完成安裝程序。您需要先從CodeIgniter官網下載CI6的壓縮套件。然後,解壓縮這個檔案並將其放置在

See all articles