PHP開發架構--CodeIgniter(CI)使用總結____PHP

來源:互聯網
上載者:User

轉自:http://blog.sina.com.cn/s/blog_7b60d05f0101tl9h.html

在開發的時候架構是十分重要的,目前有很多架構,WPF中比較出名的MVVM等,這些都是用來組織開發檔案的,就是把一個應用分開來寫。下面總結一下CI架構的用法。
CI架構是基於MVC的,分別是

Models:模型,用來擺放實體類,工具類,資料庫訪問類等,屬於背景資料支援與類型支援。

Controls:控制器,當做一個交警的作用,就是控制內部資料和外部介面的協調,所以這個是在M和V中間做調節作用了,竟然是調節作用,那麼就需要掌握一些東西:怎麼和M交流,怎麼和V交流,還有使用者是怎麼和自己交流呢。這些都是比較核心,比較重要的東西,下面會總結。

Views:視圖,這個就是介面了,反饋給使用者操作的介面了,主要用html來寫,這個大家懂了。

下面分幾步來介紹和總結CI的使用:
1、準備工作。
2、檔案介紹。
3、M、C、V之間的通訊方式。

(一)下載,地址http://codeigniter.org.cn/下載完成就是應用程式的架構了,然後放在伺服器www檔案底下,看一下檔案PHP開發架構,如下圖:

(二)然後有兩個檔案夾,一個是Application,這個是應用程式檔案放的地方,進去裡面看一下:

PHP開發架構–CodeIgniter(CI)使用總結這裡可以看到MVC了,controllers,models,views分別放各自的檔案,然後有一個config檔案夾,用來裝設定檔的。
返回去system檔案夾裡面就是存在開發這個架構的團隊寫的一些使用類,我們不用去修改,可以直接用。十分簡單,,十分明了。
(三)這裡就是重點了,在學會用一個架構的時候,架構之間的元素的通訊方式必須要清楚,這樣就能開搞。先說一下CI架構的思想,使用者是通過訪問一個controller中的方法來訪問一個頁面的,所以這個controller就起著十分重要的角色了,上面說過它是交通警察,負責監視內部資料變化和反饋介面,接受介面資訊反饋內部資料等作用。

下面說幾個主要的通訊:

1.使用者與controller的通訊,竟然使用者是通過訪問C中的方法來訪問頁面,那麼使用者與方法的通訊就通過參數來了,使用者能在URL中直接寫參數,按順序,例如http://localhost/CI/index.php/hello/sayhello/Jarvin/Afternoon
這裡就訪問hello這個controller中的sayhello方法,看方法:

PHP開發架構–CodeIgniter(CI)使用總結
我看這樣就明了了,第一個參數Jarvin第二個參數Afternoon.

2.controller與View的通訊,雖然說能混編html來進行介面表述,但是竟然是用mvc那麼就要分開,分到View裡面,在Views檔案夾裡面寫好html檔案,這些檔案能是完整的全頁面html也能是部分html,例如說頭部,身部,尾部等。寫好以後就通過Controller來引用Views中的view來展示東西了。,竟然能在Controller中引用介面檔案,那麼怎麼調用,這個是重要的:
$this->load->view(“text_view.php”);在函數裡面加上這句就是引用一個views中的檔案了。如果想調用多個,例如要一次把頭,身,尾調用進去,那麼直接在下面添加多兩條一樣的,改個名稱就OK,還要一個重要的是Controller怎麼跟view通訊呢。。。答案是利用數組,然後在第一個引用後面傳入數組.下面看例子:

function show()    {        $name="Jarvin";        $count=1;        $data= array('Name'=>$name,'num'=>$count);          $this->load->view("text_view.php",$data);//調用一個視圖    }

這樣傳過去,然後那邊怎麼接呢,如下圖:

3.Controller與model的通訊.
用來提交給view的資料很多時候不是寫死的,那麼動態資料就要用到資料庫,那麼久要用到Model了。,下面總結一下製作一個Model類進行對資料庫進行增刪改除。
其實啊,Controller調用Model類中的函數,然後傳入參數進行通訊,形式與C和V通訊差不多。

首先是建立一個模型類,建立一個模型類的模型是:

class ClassName extends CI_Model//注意要繼承CI_Model類{    function __construct()    {        parent::__construct();//建構函式裡面要調用父類的構造方法        $this->load->database();//載入資料庫,資料庫名稱在Config檔案裡面配置。,還有其他資訊,例如密碼等    }//下面寫函數。}

下面給出測試model類:

<?phpclass Test_m extends CI_Model{    function __construct()    {        parent::__construct();        $this->load->database();    }    function user_insert($arr)    {        $this->db->insert("person",$arr);    }    function user_update($name,$arr)    {        $this->db->where("Name",$name);        $this->db->update("person",$arr);    }    function user_delete($name)    {        $this->db->where("Name",$name);        $this->db->delete("person");    }    function user_select($name)    {        $this->db->where("Name",$name);        $this->db->select("*");        $query=  $this->db->get("person");        return $query->result();    }}?>

然後在controllers裡面建立一個controller,來使用這個模型類的功能:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');class User extends CI_Controller {//繼承是必須的。。    function insert()    {        $this->load->model('Test_m');        $arr=array('Name'=>'fff','Age'=>21);        $this->Test_m->user_insert($arr);    }    function update()    {        $this->load->model('Test_m');        $arr=array('Name'=>'gg','Age'=>12);        $this->Test_m->user_update('J',$arr);    }    function delete()    {        $this->load->model('Test_m');        $this->Test_m->user_delete("Ken");    }    function  select()    {        $this->load->model('Test_m');        var_dump($this->Test_m->user_select("ggg"));    } }?>

OK了,研究下就好。十分簡單

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.