巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
赞助文档Help

CI框架进修条记(二) -进口文件index.php

一佰互联网站建造(www.taishanly.com) 颁布发表日期 2020-04-28 13:46:29 阅读数: 118

  上一节(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";
一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松实现pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。

相干动静more

03
05月
我究竟该不该用“影响搜刮排名”的HTTPS?

站长之家(Chianz.com)8月22日动静 月初时,谷歌颁布发表已调剂搜刮引擎算法,将是不是利用HTTPS和谈(宁静加密)归入搜刮排名的参考因... >>概况

26
03月
若何阐发合作敌手搜刮引擎优化优化优优势

简介:阐发合作敌手网站是搜刮引擎优化优化中阐发关头词搜刮引擎优化优化难度和找到网站优化冲破点的比拟好的手腕,同时也是取得大批长尾关头词最直观的手段。那末... >>概况

12
10月
建造三网合一网站是企业将来标的目的吗

三网合一网站便是电脑网站、手机网站、微信端接洽关系。若是企业已做了电脑版网站,那另有须要再做手机版网站和接洽关系微信端吗?网站建造公司谜底是:有必... >>概况

30
04月
php保护历程 加linux号令nohup实

Unix中 nohup 号令功效便是不挂断地运转号令,同时 nohup 把法式的一切输入到放到以后目次 nohup.out 文件中,若是文件... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站