1. 程式人生 > >框架CI與YII之個人見解1

框架CI與YII之個人見解1

由於目前用的這兩個框架都不深,所以分析的難免有侷限性。

1 首先是命名上ci不如yii規範,yii跟tp一樣命名方面比如控制器都是NameController.php這種格式的,而ci是隨便命名的。其實說異同點,也沒什麼好說的,但凡都是框架用的都是同樣的思想,無法就是語法不同而已,這裡我先說CI,我工作中用的就是CI.

2 CI 指向頁面的寫法是$this->load->view('viewname');

3 若要引用library裡自己定義的方法,$this->load->library('test');呼叫的時候$this->test->functionname();另外一點需要說明的是,如果在自定義的類中定義和類同名的方法,ci會自動呼叫,這裡就是function test(){}了

4 驗證表單的時候首先要引用表單類,$this->load->library('form_validation');

  首先要設定驗證規則,$this->form_validation->set_rules('gh_name', '工會名稱', 'trim|required|xss_clean');這句話的意思是過濾gh_name這個表單,名稱不允許為空,並且進行安全驗證,這三個引數是最常用的。然後是開始驗證,前面只是設定規則,$this->form_validation->run();然後是如果符合條件的話就獲得值,$this->form_validation->set_values('gh_name);如果還是$gh_name = $_POST['gh_name'];這樣獲取值的話本身就沒有意義了。

5 很重要的一點,載入Model類。

    $this->load->model('modelname');

呼叫model中的的方法,$this->modelname->functioname();

6 呼叫資料庫的時候ci是這樣的,$this->load->database();而yii不用特意呼叫它在自己的基類中已經呼叫,在頁面中無需呼叫資料庫。我覺得ci這樣寫不如yii寫的好。

7 說一下ci的curd與yii的異同

增 ci用的最通俗易懂的方法,$this->db->insert($this->_table,$data);至於$data是什麼大家都知道了

     yii 的寫法麻煩一點我覺得,yii的增加功能叫做save但他沒有引數,也就是因為無法傳表名以及資料的值,所以一定要事例話相應的要操作的表的類。$user = new user();$user->id = "";$user->name ="";

$user->save();其中,user表繼承了基礎的類。

修改 ci的用法和add的時候一樣,只是把方法名換成了update一樣,其他的完全一樣

 yii 一般都是這樣的寫法userinfo::model()->updateById($id,$data);

我覺得在增刪改的處理上,ci做的要比yii好,首先是ci可以將各種條件組合起來,非常容易懂,比如

$$this->db->where('userid','1');$this->db->limit('5');這都是顯而易見的,很容易明白,自由組合。而yii呢,都是寫在一個方法裡,傳入各種引數這樣看這就麻煩,冗雜。

最重要的當然還是讀取了 

CI  $query = $this->db->get('tablename');這是最簡單的一種用法,平時不可能只寫這個的

此外,get這個函式第二引數Limit和第三個引數offset,可以讓你設定偏移量和讀取數量

$this->db->select();很明顯,這裡面可以傳n個引數,這是需要讀取的欄位

$this->db->select_max()像這種不是太長用的函式就不多說了

$this->db->where();這個更是明顯,舉個例子就是知道了$this->db->where('name',$name);

$this->db->where('title',$title);多次呼叫本函式會被用and連線起來

$this->db->join('comment','comment.id=blog.id');很明顯,都會用。同樣,多次呼叫本函式也會用and連線起來

還有很多其他的函式都是非常簡單,到時候用到的話查手冊即可。下面舉個例子來說明如何綜合呼叫ci的這些函式。$this->db->select('title','name','age');$this->db->where('title',$title);$this->db->join('grade','grade.id=user.id');$this->db->get('user');

上面說的操作資料的各種函式,下面說一下生成記錄集的方法,這寫都是經常遇到並且密不可分的。

$query = $this->db-query($sql);

$result 方法,如果成功就返回一個物件陣列,失敗的話返回一個空陣列。

foreach($query->result() as $row)

{

        echo $row->title;

}

result_array()該方法執行成功返回關聯陣列,失返回空陣列

foreach($query->result_array() as $row)

{

       echo $row['title'];

}

row()只返回第一行的物件陣列,失敗的話返回空陣列

row_array()返回一行的關聯陣列,失敗的話返回空陣列

上面這兩種是最最常用的,下面說幾個輔助的方法

num_rows()返回受影響的行數

YII 

舉個例項$salary = Resume::model()->find('id =:resume_id', array(':resume_id' => $resume_id));

find返回的是物件陣列,我目前知道的關於YII的讀取的函式就兩個股find和findAll,其他的就不多說了,瞭解一個框架就可以了其實。

8 session 不管什麼框架,session對他們來說都是非常重要的,ci的session設定$this->session->set_userdata('sessionname','sessionvalue');獲得session的值是$this->session

->userdata('sessionname');當然了,不能忘了 初始化session,$this->load->library('session');使用就是這麼簡單。下面我就說一下登入和退出時的session設定

登入的時候$this->session->set_userdata('user_name','namevalue');退出的時候$this->session->

set_userdata('user_name','');並且銷燬session $this->session->sess_destory();over

9 這裡說明一下library和helper,這兩個都是公共呼叫的東西,其中library是公共呼叫的類,而helper

裡面是公共呼叫的函式,其中在命名方法libraries沒有要求,helper有要求,就是一定要加上字尾_

_help.php即可。呼叫的時候library在前面已經說過了$this->load->library('libraryname');helper是

$this->load->help('helpname');由於helper裡面都是方法,所以呼叫的時候直接寫方法就可以了。

10 裝載器類

這是使用ci的過程中最常用到的一個類,其實在前面就已經說過好多他的應用,比如載入模型,載入試圖,載入輔助函式,設定載入自己定義的類檔案。比如載入libary類

1 $this->load->library('libraryname');使用地方時候就$this->libraryname->somefunction();

2 最常用的載入試圖檔案 $this->load->view('viewname');
3 載入模型,也是常用的$this->load->model('modelname');

4 載入資料庫類,這也是毋庸置疑的。$this->load->database();

5 載入輔助函式 $this->load->helper('file_name');file_name是不包含_help.php的檔名

以上5中載入應用的方法是我們最常用到的,其中載入自定義類檔案和自定義函式的應用需要注意,稍有不同。下面介紹幾種不太常用到的載入的應用