CodeIgniter架構學習要義

來源:互聯網
上載者:User
CodeIgniter架構學習要點

以下內容從兄弟連的CI教學視頻中摘抄:

http://codeigniter.org.cn/tutorials/

-----------------------------------------------------------------------------------------------

Codeigniter架構

-----------------------------------------------------------------------------------------------

講師:鄒義良

微博:weibo.com/it266

-----------------------------------------------------------------------------------------------

主要內容

CI簡介

深入MVC設計模式

CI中的控制器與視圖

CI中的超級對象

資料庫訪問

AR模型

如何擴充CI的控制器


url相關函數


設定路由


分頁


檔案上傳


Session


驗證碼


表單驗證

-----------------------------------------------------------------------------------------------

CI是什嗎?

CodeIgniter是一個輕量級但功能強大的PHP架構

基於MVC設計模式,提供了一套豐富的類庫

簡單易學,高效實用

官方網站

www.codeigniter.com

中文網站

http://codeigniter.org.cn

下載當前最新版本

CodeIgniter_2.1.4.zip

(截止2015.7.1最新版為3.0.0——筆者注)

有什麼特點?

你想要一個小巧的架構

你需要出色的效能

你需要廣泛相容標準主機上的各種 PHP 版本和配置

CI 2.1.4 需要PHP5.1.6

你想要一個幾乎只需 0 配置的架構

你想要一個不需使用任何命令符的架構

你想要一個不需堅守限制性編碼規則的架構

你不希望被迫學習一門範本語言(雖然可以選擇你喜歡的模板解析器)

你不喜歡複雜,熱愛簡單

你需要清晰,完整的文檔

目錄結構說明

license.txt 許可協議

user_guide 使用者手冊

syste 架構核心檔案

application 應用目錄

index.php 入口檔案

-----------------------------------------------------------------------------------------------

MVC

1.入口檔案

唯一一個讓瀏覽器直接請求的指令檔

2.控制器

協調模型和視圖

3.模型

提供資料,儲存資料

4.視圖

只負責顯示

表單...

5.動作action

是控制器中的方法,用於被瀏覽器請求

CI中的MVC

訪問url使用的是pathinfo

入口檔案.php/控制器/動作

application目錄中:

controllers 控制器

models 模型

views 視圖

預設控制器是welcome

預設動作是index

控制器

1.不需要加尾碼

2.檔案名稱全部小寫 例如 user.php

3.所有的控制器,直接或間接繼承自CI_Controller類

4.控制器中,對動作(方法)要求:

public

不能以_開頭

視圖

1.在控制器中如果載入視圖

//直接寫視圖名字,不寫副檔名,如果有子目錄,則寫上目錄名

2.視圖中,直接使用原生PHP代碼

3.推薦使用

超級對象

當前的控制器對象

提供了很多屬性:

$this->load

裝載器類的執行個體 system/core/loader.php

裝載器類提供的方法:

view()   裝載視圖

vars()   分配變數到視圖

database() 裝載資料庫操作對象

model()  裝載模型對象

helper()

$this->uri

是CI_URI類的執行個體 system/core/URI.php

CI_URI類提供的方法:

segment()用於擷取uri中的參數

傳統的:入口檔案.php/控制器/動作/參數1/值1/參數2/值2

入口檔案.php/控制器/動作/值1/值2

echo $this->segment(3);//值1

echo $this->segment(4);//值2

//index.php/控制器/index/6

public function index($p=0){ echo $p;//輸出6

}

$this->input

輸入類

是CI_URI類的執行個體 system/core/input.php

CI_URI類提供的方法:

$this->input->post('username'); //等價於$_POST['username'];

$this->input->server('DOCUMENT_ROOT'); //等價於$_SERVER['DOCUMENT_ROOT'];

$this->input->server('REMOTE_ADDR');

在視圖中,直接用$this來訪問超級對象中的屬性

資料庫訪問

修改設定檔

application/config/database.php

將資料庫訪問對象 裝載到超級對象的屬性中 $this->db

$this->load->query($sql);//返回對象

$res=$this->db->query($sql);//返回對象

$res->result();//返回數組,數組中是一個一個的對象

$res->result_array();//返回二維數組,裡面是關聯陣列

$res->row()//返回第一條資料,直接是一個對象


參數綁定
$sql="select * from blog_user where name=?";
$this->db->query($sql,$name);//如果有多個問號時,需要傳入一個索引數組

表首碼
$db['default']['dbprefix'] = 'new_';
$db['default']['swap_pre'] = 'swap_';


配置為一樣,代碼中,直接寫入程式碼表首碼就行了,如果以後項目資料庫表首碼發生變化,
只需要修改$db['default']['dbprefix'] = 'new_';代碼中的swap_會自動替換為new_

db的自動載入
application\config\autoload.php
$autoload['libraries'] = array(database);
不需要:$this->load->database();

取自增id

$this->db->insert_id();

受影響行數

$this->db->affected_rows();

Active record

1.application/config/database.php

確保$active_record = TRUE;

2.application/config/autoload.php

$autoload['libraries'] = array(database);

3.在設定檔中,正確配置表首碼後,會自動添加

$res->$this->db->get('表名');//返回結果集對象

$res->result();

$bool=$this->db->insert('表名',關聯陣列);

$bool=$this->db->update('表名',關聯陣列,WHERE條件);

$bool=$this->db->delete('表名',WHERE條件);

//select uid,username from user where uid>=3 order by uid desc limit 2,3

$res=$this->db->select('uid,username')

->from('user')

->where('uid >=',1)

->limit(3,2)//跳過2條,取出3條資料

->order_by('uid desc')

->get();

//顯示最進一條sql語句

echo $this->db->last_query();

//where

//$res=$this->db->where('username','marry')->get('user');

//$res=$this->db->where('username !=','marry')->get('user');

//$res=$this->db->where('username','marry')->get('user');

$res=$this->db->where(array('username'=>'hanyile','uid <'=>3))->get('user');

echo $this->db->last_query();

複雜的查詢請用$this->db->query($sql,$data);//使用問號綁定查詢

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.