天天看点

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,如需转载请自行联系原作者