1)indexController.php中寫了些簡短的demo,引用dao層、調用rpc、測試調用等。
2)publicController.php中記錄的是不需要登入的操作,目前是登入與退出操作。public/login是登入位址,使用者名是admin,密碼是123456
3)userController.php做了清單(user/lists)和表單(user/add)頁面的demo,就是下圖中的使用者清單和添加使用者
4)如上圖的目錄結構所示,library/dao中,編寫了一些資料操作的demo,可滿足簡單的增删改查
5)如上圖的目錄結構所示,library/helper/dict中,放置了些靜态常量和資料字典,例如ajax請求狀态碼、api中不需要登入的頁面、背景不需登入的位址等
1)conf,配置
2)controller,控制器
1.控制器都會繼承adminController類,在這個類中做了些請求驗證、不同的模版設定,ajax傳回資料統一結構,分頁代碼配置,通用功能方法,session儲存等
3.隻有在$initphp_list數組中設定了的,才算是一個action,才可通過域名通路
4.驗證包括post請求做限制判斷、CSRF風險控制與登入驗證等
5.左邊菜單可以做權限設定,我現在這邊是寫死的,菜單字典寫在了library/helper/dict/enumHelper中的$admin_menu裡
6.widgetController.php檔案中可以放置一些腳本插件的伺服器邏輯,例如編輯器中圖檔上傳,普通的圖檔上傳。順便說下圖檔我是單獨做了張bc_image表,上傳的圖檔都會記錄到這張表中
7.為了能在左邊菜單中有選中的效果,命名做了些限制,例如左邊菜單中action的名字為module,那麼在這個菜單下面的子菜單就得以module為開頭了,比如moduleadd。
Controller類的大緻代碼如下:
3)template,視圖
1.layout中,放的是模版檔案,目前是有三套模版,每個模版分為header和footer,不需要登入的、需要登入的和彈出層的頁面
2.public是擺放未登入的,目前就一個login登入
3.com中form.htm是用來展示php編寫表單的視圖,也就是用php來寫html代碼。form.htm中隻有一個變量,用于echo的。
5.如上圖的目錄結構,helper中的view檔案夾下放的就是php編寫html代碼,在裡面寫了兩個demo,引用的話如下:
6.大部分規則頁面就可以通過php代碼來編寫控件,但有些特殊頁面不能這麼來了,這個時候可以把html代碼直接寫在視圖中,例如user檔案夾下的layer.htm。
4)data,動态可寫檔案目錄
1.filecache:檔案緩存目錄
2.template_c:視圖檔案經過一次編譯後,變成php字尾的檔案,儲存在這裡
5)interceptor,攔截器
在裡面我就做了個性能分析的記錄,僅作示範。
1)initphp.php:
初始化的時候自動載入了部分檔案
新增了幾個dao層引用函數如下
Dao基類的初始化也做了修改修改,代碼如下:
2)dao檔案夾中新增全文檢索,search檔案
db檔案夾中新增,dbexpr.init.php用于MySQL的一些特殊情況,例如下面的更新浏覽數,将read_num作為語句的一部分,而不是一個變量出現在語句中
3)library檔案夾中
1.修改了分頁類,pager.init.php,從CI架構中扣過來的,并做了些改寫,pager2.init.php是原來的。
library中存放了通用控制器、資料層邏輯、幫助函數、服務層邏輯、簡單測試與第三方類庫。
這個結構原先是放在app中的,現在我單獨獨立出來,就是為了能多個相關項目邏輯通用。
1)controller
這裡先講解adminController檔案
1.多個驗證,保證通路的安全
2.擷取使用者session的user方法,并可擷取某個屬性
3.擷取傳過來的參數方法p,get和post都可以,并能做過濾
4.模版設定方法publicTemplate、mainTemplate、mainListTemplate、mainFormTemplate和layerTemplate
5.ajax傳回參數方法ajaxSuccessOutput(請求成功)、ajaxFailureOutput(請求失敗)
6.分頁配置方法alternate
7.擷取頁碼方法pageNo
2)dao
1.cache是緩存
2.mongo是操作MongoDB的檔案集合
在abstract檔案中封裝了一些通用的操作,例如查詢一條記錄、多條記錄、分頁、更新、插入等。memberDao有一些demo示例。
注意檔案夾夾的起名,例如bi/visitDao.php,類的名字就是visitBiMongoDao,Dao在最後,然後是名字+檔案夾目錄,這是為了保證類名的唯一性,是以定了個規則。
wx放置的是與微信相關的資料類,基本都是些日志或請求傳回的資料緩存等
3.mysql是操作MySQL資料庫的
4.search是全文檢索
目前裡面就寫了點demo,沒有做更多的封裝
3)helper
1.dict中存放的是資料字典,靜态常量、靜态數組字典等。例如密碼混淆碼常量、背景菜單字典等
2.view中存放php編寫的html代碼,對應app/xx/controller中的各個action
3.adminHelper(背景控件封裝)、formHelper(表單控件封裝)與urlHelper(url位址操作)。參照CI中的helper檔案,這幾個就是函數集合,裡面并沒有類
4)service
rpc的配置檔案寫在了public中,如下圖所示,可以單獨配置個二級域名做引用,也可以共用。
配置如下:
引用如下:
5)test
示例代碼的引用,寫在了index/unittest中。
6)third
GitHub位址:
<a href="https://github.com/pwstrick/grape" target="_blank">https://github.com/pwstrick/grape</a>
本文轉自 咖啡機(K.F.J) 部落格園部落格,原文連結:http://www.cnblogs.com/strick/p/4805235.html,如需轉載請自行聯系原作者