[心得] CI不死…

作者: j87b0003 (I'm 邱老虎)   2014-07-15 23:48:06
雖然CI很久沒更新了…(我也離開寫程式行業二~三年)
不過近四個月,也越來越有心得,後來就慢慢找到自己的習慣開發方式
我自己個人:
【Model】
負責與資料庫,所以幾乎會寫概觀的通用性
通常會有:
get_list($where, $limit, $offset, $order)
用來分頁/列表用
get_where($where)
取得單一資料
on_duplicate_batch($data)
資料新增與更新
delete($where)、add($data)、update($data, $where)
後面的新增和更新幾乎都很少用了
【Libs】
介於model和controller中間
把model的功能性除原本的,也做更多擴充,做更多細項
get_list_rows($where) =>> model->get_list($where)->num_rows()
get_by_id($id) =>> model->get_where(array('id' => $id ))
on_duplicate($data) =>> modetl->on_duplicate_batch(array(0 => $data))
delete_by_id($id) =>> model_delete(array('id' => $id ))
【Controller】
現在習慣CUID就分成:
list_all($page)
會對應到Libs的get_list,然後做分頁功能
add
餵一個假資料到view
alter($id)
對應到Libs的get_by_id
save($ajax)
這部份寫成可以用ajax處理,或是post,再以Libs的on_duplicate
【View】
以add、alter為例,會共用同一個view,
在js檢查完後,直接以
var data = {
field : field_data
}
送到Controller的save,只需要$this->input->post($data),接收後,
用on_duplicate就可以存入了,而不需各別接收每個欄位變數
【其他變形】
常常網頁開發會遇到資料欄位不統一情況,然後就會浪費去多開一個資料表
實際上資料表不會存超過十筆XDDDDDD
這部份我就以json來儲存,資料表規劃會如下:
id:資料表編號
type: 屬於哪一種資料型態
data: 資料內容,這部份就以json型態存入
例:[{id:0, name:''},{id:1, name:''}]
所以在Libs裡,就會寫上一個存入/取出的function
function get($type){
$result = model->get_where(array('type' => $type))->result_array()
$result[0]['content'] = json_decode($resulst[0]['content'], TRUE)
return $result[0]
}
function on_duplicate($data){
$data['content'] = json_encode($data['content']);
model->on_duplicate_batch(array(0 => $data))
}
而在controller可以寫一個通用的:
function uni_save($ajax = TRUE){
$flag = 1
$data = $this->input->post('data');
Libs->on_duplicate($data)
$ary = array('flag' => $flag)
if($ajax)echo $ary;
else return $ary;
}
在view裡:
js則是以這樣寫
var data = []
$('.data_area').each(function(index){
var tmp ={
'id' : index,
'name' : $(this).find('.name').val()
}
data.push(tmp)
});
var ary = {
'id' : $('#id').val()
'type' : $('#type').val()
'data' : data
}
$.ajax{
data: { 'data' : ary}
url : controller/save
}
不過這種通用的有最大缺點就是,無法針對個別做刪除,
只能每次做更新,
個人拿來的用途是:廣告的圖片和連結、產品的分類、郵遞區號等
泛用性算是非常廣XD
差不多是這樣啦,相信還有更好的寫法...
作者: alog (A肉哥)   2014-07-16 01:23:00
去玩個Rails吧:)
作者: shadowjohn (轉角遇到愛)   2014-07-16 01:40:00
去玩nodejs吧:)
作者: j87b0003 (I'm 邱老虎)   2014-07-16 05:28:00
nodejs…搭no-sql db真的很好用= =……
作者: boboptt (boboptt)   2014-07-16 07:55:00
推一個!曾是 CI 人,現在 Laravel
作者: Laravel (PHP Framework)   2014-07-17 11:23:00
不玩玩看我嗎XD
作者: j87b0003 (I'm 邱老虎)   2014-07-17 13:00:00
Laravel之前有小碰,但說明文件不是很親民…(遮臉
作者: ilay (resolution)   2014-07-17 17:27:00
symfony也不錯啊..symfony玩熟了還可以跨入drupal8 module 開發咧
作者: jazzjas (吾輩は猫である)   2014-07-17 18:57:00
我覺得lara的文件和相關資源很完整,台灣社群也蠻活絡,很值得考慮
作者: hit1205 (幫你把勇氣裝滿)   2014-07-18 00:02:00
(握住j87b0003的手)
作者: rickysu (Ricky)   2014-07-18 09:12:00
來試試Symfony吧,文件齊全到看不完 XD (握住一堆人的手)
作者: shadowjohn (轉角遇到愛)   2014-07-18 10:12:00
推 symfony 之前出差也用了一陣子,滿不錯的...
作者: j87b0003 (I'm 邱老虎)   2014-07-18 21:54:00
大家手牽手圍一圈,來淨化什麼東西吧(握手

Links booklink

Contact Us: admin [ a t ] ucptt.com