作者j87b0003 (I'm 邱老虎)
看板PHP
标题[心得] CI不死…
时间Tue Jul 15 23:48:06 2014
虽然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
差不多是这样啦,相信还有更好的写法...
--
当对
一切绝望的时候,
这时候的乐观,只是从悲观所堆积出来
:)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 27.105.39.7
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/PHP/M.1405439293.A.393.html
1F:→ alog:去玩个Rails吧:) 07/16 01:23
2F:→ shadowjohn:去玩nodejs吧:) 07/16 01:40
3F:→ j87b0003:nodejs…搭no-sql db真的很好用= =…… 07/16 05:28
4F:推 boboptt:推一个!曾是 CI 人,现在 Laravel 07/16 07:55
5F:推 Laravel:不玩玩看我吗XD 07/17 11:23
6F:→ j87b0003:Laravel之前有小碰,但说明文件不是很亲民…(遮脸 07/17 13:00
7F:→ ilay:symfony也不错啊.. 07/17 17:27
8F:→ ilay:symfony玩熟了还可以跨入drupal8 module 开发咧 07/17 17:28
9F:推 jazzjas:我觉得lara的文件和相关资源很完整,台湾社群也蛮活络,很 07/17 18:57
10F:→ jazzjas:值得考虑 07/17 18:57
11F:推 hit1205:(握住j87b0003的手) 07/18 00:02
12F:推 rickysu:来试试Symfony吧,文件齐全到看不完 XD (握住一堆人的手) 07/18 09:12
13F:推 shadowjohn:推 symfony 之前出差也用了一阵子,满不错的... 07/18 10:12
14F:→ j87b0003:大家手牵手围一圈,来净化什麽东西吧(握手 07/18 21:54