2014年4月13日 星期日

CodeIgniter framework 基礎

首先 先來說明一下 CI(CodeIgniter framework)的特色

  • 快速開發系統
          -有結構化的目錄 (避免資料的亂放)
          -Coding Style
  • 團隊合作
          -安全性高
          -內建功能模組
          -程式碼更精短

MVC 是甚麼!?
Model-View-Controller(MVC)是一種程式開發模式,針對目前以資料庫為基礎的網頁,分為
  1. Views(視野):HTML頁面
  2. Controller(控制器):應用程式邏輯
  3. Model(模組):資料庫功能

一些規則
View:
  1. 絕對不要存取資料庫
  2. 絕對不要使用任何複雜度超過 loops 和 if 的指令
Controller:
  1. 絕對不要包括 HTML 編碼
  2. 絕對不要存取資料庫
Model:
  1. 永遠絕對不要吐出 HTML

大致了解 MVC的架構,看一下 CI的程式流程圖


  1. index.php 供做前端的控制器(controller),載入執行 CodeIgniter 所需的基本的資源。
  2. Routing 檢驗 HTTP request 來決定有哪些東西需要被處理。
  3. 假如快取檔(cacheing file)存在的話,他會直接把快去送給瀏覽器,跳過後續正常的處理。
  4. Security 是在應用程式控制器(application controller)被載入之前,由 HTTP request 以及任何使用者送出的資料,都會在 security 進行過慮。
  5. 應用程式控制器(application controller)則負責載入各種不同的 request 所需的模型(model)、核心函式庫(core libraries)、補助函數(helpers)、以及所有其他資源等。
  6. 最後的檢視(View)建立出來,並送給網頁瀏覽器。假如快取功能有啟動的話,那麼檢視(View)會先被快取(Caching)下來,然後送給網頁瀏覽器。

有結構化的目錄

application(網站主目錄)
system(Codeigniter 核心目錄)
user_guide(Codeigniter 使用目錄)
index.php(網頁主程式)
我們先完成最簡單 Hello Word的範例

在 controllers 建一個 hello.php

class Hello extends CI_Controller

{

    public function index()

    {

        $data = array(

                  'context' => "hello world!"

        );

        $this->load->view('welcome', $data);

     }

}
接下來在 views 新增 welcome.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title> 

</head>

<body>

<?= $welcome ?> 

</body>

</html>
但...你會發生錯誤 error404,因為在 CI 裡面 它有一個預設的 route controller
在 config/routes

$route['default_controller'] = "welcome";

要改成
$route['default_controller'] = "hello";

網址列打上 localhost/test/
就可以顯示結果了~

還有一個很重要 Codeigniter URL

  • example.com/index.php/class/function/ID
      - 控制器(controller)啟動的類別 (class)
      - 類別的函數 (function) 被呼叫使用
      - 任何變數要傳遞給控制器 (controlloer) 所使用 

example.com/news.php?mode=edit&id=10

資料來源

沒有留言 :

張貼留言