[心得] bye bye CI

楼主: rocairforce (拾贰)   2014-07-27 20:49:47
其实不是真的要舍弃CI,只是目前以laravel为主要的framework,所以想留点心得。
=========================================
首先当然是先把环境建好,请参考线上文件
接着安装CI的spark(google ci spark)
这种东西还蛮好用的,对我在CI下的专案开发有蛮大的帮助,我把它当作模组规划,
所有的商业逻辑都放在 "spark/spark_name/版号/libraries/"这里面
controller则当作单纯的出入口,所以会变成url -> controller -> spark ->
controller -> return(ajax OR html OR xml...etc )
=========================================
因为请求几乎不是html就是ajax,所以我写了一个helper在一开始的时候引入并判断目
前是什么样的请求,而这个helper我放在一个叫common_tools的spark里,controller
在回传的时候就根据这里的判断决定回传内容。
=========================================
在我的专案里,所有回传的内容都有个统一个格式,我一样在common_tools里写了一个
处理回传的helper,基本上就是四个参数 foo(__FILE__,__LINE__,array(),code)
其中 __FILE__跟__LINE__是方便trace用的,第三个参数定义了两个index,有错误时
使用array('text'=>xxxxx)或是 array('texr'=>array(...))
没问题的话则是array('data'=>xxx) 或是 array('data' =>array(...))
第四个参数判断本次回传内容是否正确,非 0 为真,因为mysql发生错误会有代码
所以我就直接拿来使用,非数据库查询时若发生商业逻辑的错误则直接塞一个非0的值
即可。
=========================================
通常在专案的开始第一个需要的会是auth方面的东西,板上的各位神人应该都有自己的
一套做法,我自己当然也是(不过我不是神人,我还超弱)
在需求不高的情况下,我会分几个权限0,10,20,30,40,50...etc
可是久了之后会很烦,因为每次都要改或是做些额外的判断,所以我的模式改用角色的
作法。
一般会遇到的情形不外乎是 CRUD + list ,而且几乎会有一个最上层的页面,假设在
一个功能里最上层的页面是列表,我就将这个最上层的页面设为节点,所有的功能都统一
这样处理,而节点则记录在DB里面,依附在这个节点下的页面(CRUD)或功能则写在
config里,config会有个索引用来指定目前的url是哪个节点,因为这样的做法,我才能
实现我想用的角色判断权限的做法。
接下来就很容易了,每个帐号可以指定复数个角色,每个角色会有个2^n的code(1,2,4,8
16...etc),每个脚色又可以指定各个节点的CRUD权限,CRUD一样是用1,2,4,8代表
这样就可以直接定义,节点本身代表的权限是read,依附在底下的功能则让user自行设定
所以只需要用AND跟OR运算就可以判断出是否有操作的权限。
==========================================
我把到这边为止的功能当成是专案的核心,目前遇到的这样处理还没遇过什么问题,
详细点的内容有空再补上,因为好像已经不知道在打什么东西了。
PS.我是用windows的console登PTT 所以排版可能有点乱,伤眼请包涵
作者: nvizero (victor.st)   2014-07-27 20:52:00
推laravel

Links booklink

Contact Us: admin [ a t ] ucptt.com