[心得] 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