分开前后台的几种方式
如果有使用过ThinkPHP的朋友,肯定会熟悉下面这张图(TP3.2)
TP中实现多应用是很简单的,框架本省支持应用分组,创建一个新的应用只需在application中新建一个文件夹复制相关内容即可,而且支持公有模型、配置,且支持配置文件优先级。
比起来CI框架并不支持这样的功能,CI提供了两种方案给用户解决多应用问题:
1、创建子目录
在Model、Controller等文件夹下建立子文件夹,加载相关模型、控制器时只需加上子目录即可,如下
2、多应用多入口
在application下建立多个应用文件夹,每个文件夹下是一个应用,为每个应用创建入口文件,定义application路径,如下
两种方式的特点
1、创建子目录方式: 属于一个CI应用,共享配置文件,无法进行单独的配置设置,比如后台要开钩子功能但是前台不需要,或者前后台需要分别加载各自的模块时,这种搭建方式就不是那么友好了。
2、多应用多入口: 前后台分为单独的CI应用,可以单独进行配置,通过各自的入口文件访问,应用完全分离,但是无法进行模型、自定义类库的共享。
方案的选择
无论选择哪种方案,都要跟着实际需求去选择,你的项目前后台是否需要单独的配置?是否是两个队伍分别开发前后台?等等。
就以我的博客为例,我选择了第2种方案。
那么第2种方案无法共享模型、类库的问题怎么解决呢?同样的数据,难道我要为了前后台写两份模型出来吗?
OK,显然CI并没有给我们提供分组、共享模型的功能,但是CI的特点之一就是“可扩展”,需要你自己动手做一些东西,这个框架没那么丰富,但却小巧、灵活,这也是CI的乐趣之一。
多入口应用搭建
搭建目录、设置入口文件
将application种的文件复制两份,分别为home和admin(前后台)
设置入口文件的 $application_folder 变量
前台: index.php
后台: admin.php
此时在两个应用中创建不同的welcome控制器、视图,分别访问index.php
,admin,php就能分别访问到不同的应用了。