techsir注:这是一套开源社区系统,默认主题模仿v2ex,框架symfony ,目前postgresql数据库相对于中小企业用的不是特别多,我们认为支持mysql,更容易建立开源社区的氛围和用户基数。同时,建议官方注明是否是symfony2 。该项目的主要研发成员都在山东济南。
蓝房子系统简介
一个轻量级的,关注于移动互联网的,易于集成的新式社区程序。
基于Symfony框架+PHP/PostgreSQL开发
此版本主要是针对技术架构做的重构,重构后的架构扩展性更强。
改动如下:
1,抽取出常用的CRUD操作,使用公用父类(ResourceController,EntityRepository)来完成通用的CRUD操作,
2,页面分页,页面排序(鼠标点击某列进行排序)统一使用父类进行完成
3,架构中的各层均使用容器注入服务进行调用(controller,repository,form)
4,前端页面映射由注释统一改成yml形式进行匹配URL
5,注入监听接口,包括:每个实体的数据库操作,每次页面请求访问
6,项目分为两个Bundle,CoreBundle和WebBundle,使业务操作与Web分开
蓝房子访问地址:bluehouseapp.com/
蓝房子V0.0.3架构重构总结:
1,定义基类ResourceController,来完成通用的CRUD请求动作,
包括:实体的CRUD,捕获页面传入的分页信息、查询条件过滤信息、实体排序信息,
均能自动进行处理。
自定义的所有的Controller都集成于此类,只关注业务逻辑处理即可。
2,架构中的各层均使用容器注入服务进行调用,
需要对model相关的服务在Configuration中进行自定义,
针对每个模型可以进行的配置:页面模板目录,模型定义类,Controller,Repository,Form,
这些服务定义后在处理请求时会自动被基类repository调用,无需进行手动处理。
3,定义全局配置参数,包括分页、排序、过滤,
这些信息只是全局信息,如果想进行为某个实体进行自定义,可以在实体的routing文件中进行再定义,
会自动覆盖全局定义的参数。
4,前端页面映射由注释统一改成yml形式进行匹配URL,定义匹配url规则时可以加上其它参数,会被自动处理。
如果一个controller中只有统一的CRUD操作,那么可以不创建Ctroller,使用基类ResourceController即可。
5,注入监听接口,包括:每个实体的数据库操作,每次页面请求访问。
可以很方便的为每个实体插入自定义的监听事件。
6,项目分为两个Bundle,CoreBundle和WebBundle,使业务操作与Web分开,
CoreBundle重点处理逻辑操作,WebBundle重点处理web请求相关的,包括:定义routing,web静态资源等。