CI框架學習筆記(一) - 環境安裝、基本術語和框架流程

轉:在本文開始以前,有必要對文中反覆出現的術語作一個簡單的說明,若是你對這一部分已經熟諳,徹底能夠略過。本文中反覆出現和說起的術語包括:javascript

前端控制器(Front Controller):php

  用於集中控制用戶的全部請求的組件,將用戶的請求發送到具體的應用程序控制器。在CI框架中,指的就是框架的入口文件Index.php.前端控制器自己是一種設計模式,詳細可參考《J2EE設計模式》。css

應用程序控制器html

  應用程序控制器是具體的處理用戶請求URL的控制器,一般將一組相關的處理或者請求放置在一個應用程序控制器中,例如:UserController可能包含用戶的註冊、驗證、我的信息、我的頁面等相關操做。前端

MVCjava

  老生常談的一個術語,是一種代碼分層和組織模式。將代碼分爲M(Model,業務邏輯),V(view ,視圖),C(Controller,控制器)等層次,便於將業務邏輯部分和視圖渲染部分分離,減小代碼的耦合。目前PHP中許多框架都基於MVC模式,如ZF,YII,CI等nginx

Route路由redis

  雖然名爲Route,但這裏並非路由器,而是指截取用戶的請求並將請求轉發到特定的Controller處理的過程。不一樣的框架的路由不一樣,但基本原理相同。sql

Hook鉤子數據庫

  最初的Hook是指「消息傳遞中一個環節,用於監控消息的傳遞,並在消息處理以前,添加特定的處理」。這裏的Hook是指,在不改變框架核心源碼的基礎上增長或更改系統的核心功能,最典型的狀況包括:在控制器加載以前或加載完成以後運行特定的腳本。

CI框架配置

  本文的基本環境:Linux x86_64 GNU/Linux .安裝了PHP(CGI)+Nginx+Mysql+redis(因此本文的許多服務器相關的配置都是以Nginx爲主,而暫時忽略Apache服務器)。

  首先下載CI框架的源碼,下載地址爲:http://codeigniter.org.cn/downloads 目前穩定版本是2.2.0 。將源碼解壓到文件夾(假設爲/usr/nginx/html/CI 目錄)。

 

其中:

Application :   應用程序的目錄,你的全部的應用代碼都應該位於這個目錄

index.php :   框架的入口文件

static :  咱們本身創建的目錄,放置一些CSS,image和js等靜態文件(這徹底能夠放到application目錄下,看我的喜愛)

system :   CI框架的系統文件,也是源碼閱讀的主要部分

user_guide : 用戶指導,相似於離線的用戶手冊。

CI框架須要配置的地方比較少:

1.  配置routes

  Routes.php中配置的是默認的應用程序控制器和404頁面. 打開application/config/routes.php文件, 配置以下:

?
1
2
$route [ 'default_controller' ] = "index" ;
$route [ '404_override' ] = '' ;

2.  配置數據庫database.php

  若是你的應用程序須要提供動態內容,那麼數據庫幾乎是必不可少的配置。打開application/config/database.php文件,該文件內容以下:

 

CI框架是支持多數據流鏈接的,default是當前默認的鏈接,active_record用於指定是否啓用ARM(Active Record Model)。每一個配置項很是簡明,這裏再也不作過多介紹。

3.  去掉index.php

  如今訪問你的應用程序,url應該相似於這樣:

?
1
2
test.xq.com/index.php/index
test.xq.com/index.php/welcome

注意每一個請求都會帶有index.php段。去掉index.php會讓URI更加美觀。

打開剛剛添加的test.xq.com.conf文件,在server中添加以下配置:

if ($request_filename !~* /(favicon.ico|static|uploads|js|javascript|css|images|robots\.txt|index\.php|index\.html))
{
   rewrite ^/(.*)$ /index.php?$1 last;
}

重啓服務器後,如今,URL的訪問方式變成了:

?
1
2
test.xq.com/index
test.xq.com/welcome

是否是簡潔多了 :D

4.  添加.html訪問後綴

  可能還有人喜歡url中添加特定的後綴,例如.html後綴使你的應用程序更相似於一系列靜態文件。配置方法是,在application/config/config.php中,更改以下配置爲:

?
1
$config [ 'url_suffix' ] = '.html' ;

CI框架的更多配置能夠參考:

讓Nginx支持.htaccess(本文沒有說起使用.htaccess重寫的內容,能夠參考之)http://www.php100.com/html/program/nginx/2013/0905/5537.htmlCI框架集成Smarty,習慣用smarty模板引擎的童鞋能夠看看 http://www.kankanews.com/ICkengine/archives/70302.shtml 配置Vhost

  爲了方便訪問(相比ip地址訪問的方式,域名訪問有更好的可記憶性),咱們能夠配置vhost,配置方式爲:進入nginx的vhost目錄,新建配置文件(本文中爲test.xq.com.conf,通常狀況下,咱們的每一個vhost都會以域名命名)。在配置文件中輸入以下內容:

server {
  listen    80;
  server_name test.xq.com;
  root     /usr/nginx/html/CI/;
 
  access_log logs/xq_access_log main;
  error_log logs/testsq.log error;
  charset GBK;
  index index.php;
 
  location ~ .*\.(php|php5)?$
  {
    include    fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass  127.0.0.1:9000;
  }
 
}

Server中暫時沒有其餘rewrite配置,稍後在配置CI框架的時候,咱們能夠添加更多的配置類支持CI的友好URL.

打開本地的host文件,在host中添加條目:

?
1
10.130.130.130 test.xq.com

其中10.130.130.130應該是你的服務器的IP地址。

如今,在瀏覽器中能夠經過域名訪問CI框架了。

框架流程

在結束本文以前,咱們再看看CI框架的基本流程,這個流程將貫穿源碼閱讀的始終,因此,頗有必要認真研讀一下。引用CI框架用戶手冊的上的流程圖:

基本的執行流程以下:

Index.php是前端控制器,初始化框架所需的全部資源,加載應用程序基本配置,接收全部用戶的請求,並經過Route路由用戶請求若緩存文件存在,它將繞過一般的執行順序,直接發送到客戶端。Security數據過濾。這位於應用程序控制器裝載以前。應用程序控制器加載數據庫驅動、類庫、業務邏輯類和可能的其餘資源,處理用戶的請求視圖發送到客戶端。若是開啓緩存,則視圖會被緩存,用於以後的請求。

相關文章
相關標籤/搜索