天天看點

grape動态PHP結構(二)——管理背景 一、概述二、入口檔案三、app檔案,視圖與控制器四、initphp庫檔案修改五、library類庫

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,如需轉載請自行聯系原作者