亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

CI框架源碼閱讀筆記2 一切的入口index.php

2020-03-22 19:49:34
字體:
來源:轉載
供稿:網友
  •   上一節(CI框架源碼閱讀筆記1 - 環境準備、基本術語和框架流程)中,我們提到了CI框架的基本流程,這里再次貼出流程圖,以備參考:


      作為CI框架的入口文件,源碼閱讀,自然由此開始。在源碼閱讀的過程中,我們并不會逐行進行解釋,而只解釋核心的功能和實現。

    1. 設置html' target='_blank'>應用程序環境
    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框架能夠正常運行的關鍵。

      最后,按照慣例,貼一下整個文件的源碼(簡化注釋版):

     1 <?php 2  3 define('ENVIRONMENT', 'development'); 4  5 if (defined('ENVIRONMENT')) 6 { 7     switch (ENVIRONMENT) 8     { 9         case 'development':10             error_reporting(E_ALL);11         break;12     13         case 'testing':14         case 'production':15             error_reporting(0);16         break;17 18         default:19             exit('The application environment is not set correctly.');20     }21 }22 23 /*24  * SYSTEM FOLDER NAME25  */26 $system_path = 'system';27 28 /*29  * APPLICATION FOLDER NAME30  */31 $application_folder = 'application';32 33 /*34  *  Resolve the system path for increased reliability35  */36 if (defined('STDIN'))37 {38     chdir(dirname(__FILE__));39 }40 41 if (realpath($system_path) !== FALSE)42 {43     $system_path = realpath($system_path).'/';44 }45 46 $system_path = rtrim($system_path, '/').'/';47 48 if ( ! is_dir($system_path))49 {50     exit("xxxxxxxx");51 }52 53 /*54  *  set the main path constants55  */56 // The name of THIS file57 define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));58 59 // this global constant is deprecataaed.60 define('EXT', '.php');61 62 // Path to the system folder63 define('BASEPATH', str_replace("http://", "/", $system_path));64 65 // Path to the front controller (this file)66 define('FCPATH', str_replace(SELF, '', __FILE__));67 68 // Name of the "system folder"69 define('SYSDIR', trim(strrchr(trim(BASEPATH, '/'), '/'), '/'));70 71 // The path to the "application" folder72 if (is_dir($application_folder))73 {74     define('APPPATH', $application_folder.'/');75 }76 else77 {78     if ( ! is_dir(BASEPATH.$application_folder.'/'))79     {80         exit("Your application folder path does not appear to be set correctly. Please open the following file and correct this: ".SELF);81     }82 83     define('APPPATH', BASEPATH.$application_folder.'/');84 }85 86 require_once BASEPATH.'core/CodeIgniter.php';
    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    亚洲精品免费av| 国产男女猛烈无遮挡91| 日韩69视频在线观看| 亚洲天堂日韩电影| 亚洲精品理论电影| 国产99久久精品一区二区 夜夜躁日日躁| 91久热免费在线视频| 日韩欧亚中文在线| 在线成人免费网站| 国产精品九九久久久久久久| 国产精品久久久久久久av电影| 日韩一区二区三区国产| 欧美黑人性生活视频| 2020久久国产精品| 国产z一区二区三区| 亚洲欧美综合区自拍另类| 亚洲男人天堂手机在线| 欧美亚洲视频在线看网址| 国产精品成人观看视频国产奇米| 菠萝蜜影院一区二区免费| 亚洲福利视频在线| 国产精品扒开腿爽爽爽视频| 国产欧美日韩免费| 欧美丝袜美女中出在线| 欧美午夜电影在线| 亚洲一区二区三区成人在线视频精品| 国产精品激情自拍| 亚洲精品456在线播放狼人| 亚洲人成欧美中文字幕| 国产一区二区三区在线播放免费观看| 欧美日韩综合视频| 亚洲日本欧美日韩高观看| 国产午夜精品一区理论片飘花| 亚洲国产又黄又爽女人高潮的| 日本亚洲精品在线观看| 久久影视电视剧凤归四时歌| 国产精品免费小视频| 欧美性xxxx极品高清hd直播| 日韩男女性生活视频| 久久久之久亚州精品露出| 国产91免费观看| 亚洲一区二区三| 91精品国产亚洲| 日韩精品久久久久久久玫瑰园| 久久久99久久精品女同性| 欧美激情亚洲另类| 国产精品偷伦免费视频观看的| 欧美精品久久久久久久免费观看| 91精品成人久久| 青青草99啪国产免费| 国产精自产拍久久久久久蜜| 亚洲成人激情小说| 亚洲人成欧美中文字幕| 国产精品视频精品视频| 久久偷看各类女兵18女厕嘘嘘| 国产精品福利久久久| 国产日韩欧美中文| 欧美性xxxx极品高清hd直播| 久久久免费精品视频| 97国产精品视频人人做人人爱| 国产欧美一区二区三区久久人妖| 中文字幕欧美国内| 亚洲美女av网站| 欧美极品美女电影一区| 欧美最近摘花xxxx摘花| 亚洲国产精品久久久久秋霞不卡| 成人黄色免费在线观看| 亚洲第一天堂无码专区| 91在线观看免费高清完整版在线观看| 亚洲深夜福利在线| 国产精品久久久久久av福利软件| 亚洲美女性生活视频| 中文字幕不卡在线视频极品| 国产欧美精品日韩| 57pao精品| 亚洲欧美日韩在线一区| 国产美女搞久久| 96sao精品视频在线观看| 68精品久久久久久欧美| 国产精品精品久久久| 在线视频日韩精品| 91禁外国网站| 国产在线观看一区二区三区| 亚洲男人的天堂在线| 色综合久综合久久综合久鬼88| 日韩av大片在线| 国产一区二区三区直播精品电影| 国产精品欧美日韩一区二区| 色www亚洲国产张柏芝| 91社影院在线观看| 久久久久久97| 亚洲欧美三级伦理| 欧美国产日产韩国视频| 精品国产31久久久久久| 亚洲少妇中文在线| 欧美极品美女电影一区| 91伊人影院在线播放| 奇米成人av国产一区二区三区| 亚洲精品一区二区三区婷婷月| 欧美精品久久久久久久久久| 亚洲一品av免费观看| 欧美高清视频在线播放| 亚洲精品久久久久中文字幕二区| 国产精品成av人在线视午夜片| 国产女人18毛片水18精品| 日韩资源在线观看| 精品国偷自产在线视频| 欧洲美女7788成人免费视频| 国内外成人免费激情在线视频| 高跟丝袜一区二区三区| 91在线播放国产| 国产日韩欧美影视| 国产精品一区二区av影院萌芽| 国产一区二区三区在线播放免费观看| 欧美另类高清videos| 亚洲视频在线观看网站| 97国产一区二区精品久久呦| 欧美自拍视频在线观看| 精品久久在线播放| 亚洲自拍偷拍网址| 欧美二区乱c黑人| 久久久女人电视剧免费播放下载| 欧美一级在线亚洲天堂| 在线视频精品一| 在线看日韩欧美| 精品福利视频导航| 在线看日韩av| 日本在线精品视频| 国产在线播放不卡| 精品国产依人香蕉在线精品| 亚洲精品999| 美女少妇精品视频| 日韩中文在线视频| 性色av一区二区三区| 韩国福利视频一区| 亚洲а∨天堂久久精品喷水| 日韩中文字幕免费视频| 孩xxxx性bbbb欧美| 国产精品视频xxx| 久久影院资源网| 国产精品亚洲视频在线观看| 777精品视频| 亚洲成人网av| 在线一区二区日韩| 欧美成人免费全部| 91国产一区在线| 91在线视频导航| 久久久精品网站| 成人国产精品久久久久久亚洲| 欧美精品免费在线观看| 日韩经典第一页| 亚洲mm色国产网站| 一区二区在线免费视频| 91精品免费久久久久久久久| 精品高清美女精品国产区| 日本精品久久中文字幕佐佐木| 日韩精品视频观看| 国产精品入口福利| 国产精品电影在线观看| 91成人在线观看国产| 91精品国产综合久久香蕉的用户体验| 国产成人福利视频| 色综合久综合久久综合久鬼88| 国产精品一区av|