首先先至官方網站下載,目前版本為1.72。

佈署

將下載後的資料解壓縮到apache下的htdocs資料夾。
壓縮檔內有system及user_guide(用戶操作說明)及index.php檔案,將system及index.php解壓縮即可。

主要核心為system,而開發的程式碼置於system內的application內,具體資料夾待會在介紹。

可以多個系統(資料夾)共用同一個核心,只需在index.php內

$system_folder = "system";
system更新為核心位置的路徑即可。例如 $system_folder = "../ci_sys";(核心資料夾名稱可自訂)
※若看官對於配置不太清楚,可以照個範例命名,待瞭解運作方式後再依照自己的習慣進行命名。


資料夾安排方式如下:
htdocs
 └ ci_system
   └ ci_sys (系統核心,也就是整個system資料夾)
   └ system1 (system內的application資料夾及index.php搬移至這裡,名字可自訂)
     └ index.php
     └ application
   └ system2
   └ system3
   └ ....

接下來網站設置

系統設置
進到system1 / application / config 內的config.php
$config['base_url']    = "http://example.com/"; 改為開發系統的url,本機就用http://localhost。例http://localhost/ci_system/system1/


設定資料庫連線
進到system1 / application / config 內的database.php
將相關帳號密碼、主機位置設置完畢。


設定預設載入
進到system1 / config 內的autoload.php
將要預設自動載入的libraries、helper、plugin或model等在此設定載入。
其中libraries的database可以預設載入,較常需要呼叫到資料庫相關的操作,所以預先載入可以節省一些程式碼。


設定預設載入的控制器
進到system1 / application / config 內的routes.php
$route['default_controller'] = "welcome";  將其改為預設載入控制器的名稱,暫時先知道這樣即可。

設定完畢後就可開啟瀏覽器進行測試,看是否已將ci核心安裝完成。例如:http://localhost/ci_system/system1


MVC簡介

看官從網路上稍微查詢一下mvc架構即可大略得知運作架構及模式。
這邊再白話稍微帶一下:
Model 模組
View 視圖(簡單來說就是顯示面)
Control 控制器

一般來說php程式設計就是透過php將資料庫內的資料透過程式將其轉變為有意義的資料顯示在網頁上。(念這一段好累,哈)
控制器負責將 使用者輸入的資料或是提出的請求,透過模組與資料庫進行溝通並取出資料,取出的資料在組合或轉換成一般的html顯示在網頁上。
模組負責與資料庫溝通,控制器將取出的資料與不同功能的模組處理後丟給視圖轉為一般的靜態網站。

這邊簡單談一下ci的mvc架構。
在ci的application資料夾下的controllers、models、views三個資料夾即是控制器、模組、視圖程式的放置位置。
進到網址後(例如:http://localhost/ci_system/system1/)的第一個頁面就是上面預設載入的控制器,也就是welcome
$route['default_controller'] = "welcome";  ← 這一行設置呼叫的控制器
開啟後可以將控制器載入模組。

class Welcome extends Controller { //控制器名稱抬頭必須大寫

    function Welcome()
    {
        parent::Controller();   
    }
   
    function index()
    {
      
        //若要載入模組,方式如下:
        //載入models資料夾內的model1資料夾內的model1_1.php....
        $this->load->model('model1/model1_1');
        $this->load->model('model1/model1_2');
        $this->load->model('model2/model2_1');

        //將$data資料送入model1_1的model1_1_fun內執行,並將結果回傳到$result陣列內的data1
        $result['data1']['title'] = $this->model1_1->model1_1_fun($data);

        //將$data資料送入model2_1的mode2_1_fun內執行,並將結果回傳到$result陣列內的data2

        $result['data2'] = $this->model2_1->model2_1_fun($data);

        //將$result陣列傳送到welcome視圖
        $this->load->view('welcome', $result);
    }
}

而視圖views部份,則可以先將各版面製作完成,再以include方式嵌入。
<?php $this->load->view('includes/header'); ?>
<?php $this->load->view('layout/base'); ?>
<?php $this->load->view('includes/footer'); ?>

而剛剛傳送到視圖views的陣列呼叫方式為:
<?=$data1['title']?> ← 剛剛的二維陣列 $result['data1']['title']
<?=$data2?> ← $result['data2']

在ci的mvc就是很清楚的要將程式置於該資料夾內。
控制器負責載入模組、並將取出的資料送到視圖內。
理想的狀況是視圖僅需要用簡單的php將該位置的變數帶入即可,資料傳遞、迴圈判斷等都由控制器負責。
與資料庫溝通盡量都透過模組,而不在控制器呼叫資料庫讀寫。
當然,也因為如此區分,所以寫起來的彈性度就大為降低,但因為區分的很清楚,在維護上若瞭解ci的架構者能夠輕易接手。
團隊合作寫程式也較能理解程式的流程,而美工設計師則專注於將html設計完成即可,幾乎不用去考慮到程式設計。


下面整理幾個學習網站及資源,有興趣的看官可自行研讀。
※對岸的資源較豐富,從討論區可見一斑,故幾乎都是簡體資源較多。
另外強力推薦 NettusCI系列示範課程


以上,大夥兒體驗看看。

 

ezcshi 發表在 痞客邦 留言(5) 人氣()