[學習*Codeigniter* 第一天]

<p>[程序運作流程]
下圖說明了整個系統的數據流程:

CodeIgniter 程序流程


圖片發自簡書App
  • index.php 文件作為前端控制器,初始化運行 CodeIgniter 所需的基本資源;

  • Router 檢查 HTTP 請求,以確定如何處理該請求;

如果存在緩存文件,將直接輸出到瀏覽器,不用走下面正常的系統流程;

  • 在加載應用程序控制器之前,對 HTTP
  • 請求以及任何用戶提交的數據進行安全檢查;
  • 控制器加載模型、核心類庫、輔助函數以及其他所有處理請求所需的資源;
  • 最后一步,渲染視圖并發送至瀏覽器,如果開啟了緩存,視圖被會先緩存起來用于后續的請求。

[框架目錄]

[目錄架構]
app
|-----system 框架程序目錄
|-----core 框架的核心程序
|-----CodeIgniter.php 引導性文件
|-----Common.php 加載基類庫的公共函數
|-----Controller.php 基控制器類文件:CI_Controller
|-----Model.php 基模型類文件:CI_Model
|-----Config.php 配置類文件:CI_Config
|-----Input.php 輸入類文件:CI_Input
|-----Output.php 輸出類文件:CI_Output
|-----URL.php URL類文件:CI_URl
|-----Router.php 路由類文件:CI_Router
|-----Loader.php 加載類文件:CI_Loader
|-----helpers 輔助函數
|-----url_helper.php url相關的輔助函數,如:創建url的輔助函數
|-----captcha_helper.php創建圖形驗證碼的輔助函數
|-----libraries 通用類庫
|-----Pagination.php 通用分頁類庫
|-----Upload.php 通用文件上傳類庫
|-----Image_lib.php 通用圖像處理類庫
|-----Session.php 通用session類庫
|-----language 語言包
|-----database 數據庫操作相關的程序
|-----DB_active_rec.php 快捷操作類文件(ActiveRecord)
|-----fonts 字庫

|-----application 項目目錄
|-----core 項目的核心程序
|-----helpers 項目的輔助函數
|-----libraries 通用類庫
|-----language 語言包
|-----config 項目相關的配置
|-----config.php 項目相關的配置文件
|-----database.php 數據庫相關的配置文件
|-----autoload.php 設置自動加載類庫的配置文件
|-----constants.php 常量配置文件
|-----routes.php 路由配置文件
|-----controllers 控制器目錄
|-----welcome.php 控制器文件,繼承CI_Controller
|-----models 模型目錄
|-----welcome_model.php 模型文件,繼承CI_Model
|-----views 視圖目錄
|-----welcome.php 視圖模板文件,默認后綴名為.php
|-----cache 存放數據或模板的緩存文件
|-----errors 錯誤提示模板
|-----hooks 鉤子,在不修改系統核心文件的基礎上擴展系統功能
|-----third_party 第三方庫
|-----logs 日志

|-----index.php 入口文件

[目錄簡介]
甚于的文件只有三部分,index.php、systerm文件夾和application文件夾。我們可以分開分析。

[index.php入口文件]

  • <strong>index.php</strong>是CI的入口文件件,換句話說,用CI搭建的框架,我們發送的請求都是請求的這個文件,后面跟的controller和method都是跟在URL后面的參數。
    > 比如http://localhost/index.php?/admin/main,問號以后實際上都是參數了。

  • 為了方便用戶瀏覽,我們在.htaccess和http.conf里開啟了隱藏/index.php?,把URL寫成http://localhost/admin/main,但是不能被這個所迷惑,以為是直接訪問的admin/main。

[systerm文件夾]

  • 從字面上我們也很容易理解到,這是CI的框架核心部分,基本上我們用CI做開發的時候是不要去改動這一部分的東西的(甚至包括index.php),當然如果你對這個框架非常熟悉并嘗試去修改這個框架,那你肯定要去修改這里面的部分了。
  • 我們可以看到這里面有core、database、fonts、helpers、language、libraries六個文件夾(我們基本可以暫時忽略掉index.html和.htaccess)。從字面意義上也很好理解。
    |--- core,核心部分,包括CI框架的核心類,CI每運行一次,基本上這里面的文件都要運行一遍;
    |
    |--- database,和數據庫有關的,是數據庫驅動,CI支持多種數據庫,包括mySQL,SQL server等;
    |
    |--- fonts,字體,基本可以忽略;
    |
    |--- helpers,輔助函數,是一個很實用的部分,常用到的有url、date等,在我們編寫代碼的時候會經常用到;
    |
    |--- language,語言文件,用于多語言支持,以數組的形式編寫,默認只有English包;
    |
    |--- libraries,類庫,以類的形式存在,一些相對于helpers來說更重要的、模塊化、系統性較強的東西,如session、Zip、XML解析、單元測試等等;
  • 我們可以看到除了fonts文件夾,其他每個文件夾里都有很多內容,現在我們并不具體分析每個文件夾里的文件的作用。

[application文件夾]

  • 里面也是一些文件夾,我們依然從字面去理解,并簡單的看一下里面有些什么東西;
    |--- cache,緩存,里面是空的;我們可以在這個地方放一些緩存,淡然這個緩存指的是緩存數據;
    |
    |--- config,這個文件夾里有一些文件,都是配置文件,每個文件的命名很很好懂了;同時我們也可以注意到這里面的文件和systerm/core、systemrm/libraries里面的文件具有一些相同名字的,顯然這些都是我們利用CI做一個web應用時需要去修改的配置文件;
    |
    |--- controllors,控制器,CI讓我們用MVC的模式去開發應用,那這個文件夾下放的就是我們的C的一部分了;控制器,處理業務邏輯,我們編寫的控制器類應該放在這里了;
    |
    |--- core,這里又有一個core,可以放對框架核心的擴展類;
    |
    |--- error,錯誤頁面存放的地方,里面可以看到404的頁面,我們可以修改它;
    |
    |--- helpers,空的文件夾,在這里放上我們自己添加的輔助函數;
    |
    |--- hooks,鉤子,官方文檔里說:使得您可以在不修改系統核心文件的基礎上來改變或增加系統的核心運行功能;一個需要去靈活運用的東西;
    |
    |--- language,放置語言文件;
    |
    |--- librariies,放置我們的類庫;
    |
    |--- logs,存放日志;
    |
    |--- models, M的部分,數據操作的函數應該放在這里了;
    |
    |--- third_party,如果要擴展CI的話,這也是需要用到的地方;
    |
    |--- views,V的部分,放置視圖文件,顯然這個里面的文件是整個CI里僅有的會有很多HTML的地方了;

  • 很明顯這個文件夾里大部分都是空文件夾,除了config里面有一些設置文件,errors里有如404之類的頁面。

  • 這個文件夾時CI預留給我們存放自己開發的項目的,每一類文件應該放置在什么地方都為我們歸好類了,大大簡化了開發流程和工作量。

[引用外部文件]

> [CI框架怎么引外部的CSS和JS文件]

1、兩種方法,相對路徑和絕對路徑
2、相對路徑是相對網站根目錄的路徑也就是index.php所在的路徑
3、絕對路徑可以使用config.php中base_url配置
4、舉例:public是根目錄下的文件夾,存放靜態文件


>[相對]



>[絕對]
首先php獲取base_url的值

$base_url = $this-&gt;config-&gt;item('base_url');
//通過參數傳遞到html頁面
$this-&gt;load-&gt;view('index', array('base_url'=&gt;$base_url));
//頁面中使用


>[示例]


頂部
</p>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容