本文实例分析了CI框架实现框架前后端分离的方法。分享给大家供大家参考,具体如下:

我们在使用CI框架开发中(或者使用所有的其他框架开发中),总是习惯于将所开发项目的前端和后台分离开来,将各自的控制器、模型或视图放到不同的文件夹中。在这一点上ThinkPHP框架要比CI框架更要方便一些。这篇博文我们就讲述如何实现根据CI框架开发将前后端实现分离。(本文以本人开发的Pkadmin后台管理系统为例,Pkadmin后台管理系统是基于Codeigniter_v3.1.0框架和Olive Admin后台模版进行开发的,在这里就不过多的介绍,感情趣的朋友可以到Github进行查看欢迎大家指正相互学习。
Github地址:https://github.com/zhihua-wei/Pkadmin)
1、建立合理的目录结构
CI框架的目录结构以及各目录的功能相信大家都已经很了解了,在这里就不在重复的进行介绍了(如果还有不是很明白的可以去看博主的博客专栏)。我们要实现前后端框架功能分离,首先就要建立合理的目录结构,也就是你想将你的前端控制器放在何处、后台控制器放在何处、前端视图放在那个文件夹、后台管理视图放在那个文件夹。
如上图是Pkadmin后台管理系统的目录结构,我将控制器全部放在框架本身的controllers文件夹中,只添加了不同的前端后台文件夹存放各自的控制器文件,视图也是同样。不做赘述。
2、扩展加载器设置视图路径
① 为了项目有更好的维护性,我把视图路径设置为常量,在App/config/constants.php中进行定义常量:
//定义前台视图路径常量
define('HOME_VIEW_DIR', 'views/Home/');
//定义后台视图路径常量
define('ADMIN_VIEW_DIR', 'views/Pkadmin/');
//版本
define('PKADMIN_VERSION', '1.0.0');
② 扩展加载器
加载器如何扩展如果有博友不会的可以去查看CI框架手册,上面讲的非常清楚。(多说一句:在APP/core文件夹下创建PK_Loader.php文件)
<?php
/**
* ==========================================
* Created by Pocket Knife Technology.
* Author: ZhiHua_W <zhihua_wei@foxmail.com>
* Date: 2016/11/02 0031
* Time: 上午 9:19
* Project: Pkadmin后台管理系统
* Version: 1.0.0
* Power: 加载器扩展
* ==========================================
*/
defined('BASEPATH') OR exit('No direct script access allowed');
class PK_Loader extends CI_Loader {
/**
* 设置前台视图路径
*/
public function set_home_view_dir() {
$this -> _ci_view_paths = array(APPPATH . HOME_VIEW_DIR => TRUE);
}
/**
* 设置后台视图路径
*/
public function set_admin_view_dir() {
$this -> _ci_view_paths = array(APPPATH . ADMIN_VIEW_DIR => TRUE);
}
}
3、扩展控制器
扩展控制器主要是为了生成前台后台的父控制器方便与进行操作继承(为了方便可以很快明白其原理,代码有所精简)。
<?php
/**
* ==========================================
* Created by Pocket Knife Technology.
* Author: ZhiHua_W <zhihua_wei@foxmail.com>
* Date: 2016/11/02 0031
* Time: 上午 9:23
* Project: Pkadmin后台管理系统
* Version: 1.0.0
* Power: 控制器扩展
* ==========================================
*/
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* 前台父控制器
*/
class Home_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
$this -> load -> set_home_view_dir();
}
}
/**
* 后台父类控制器
*/
class Pkadmin_Controller extends CI_Controller {
public $data;
public function __construct() {
parent::__construct();
$this -> load -> set_admin_view_dir();
}
}
4、测试
在Pkadmin控制器文件夹中新建Admin.php(后台首页)控制器文件进行输出测试(代码有所删除精简)。
<?php
/**
* ==========================================
* Created by Pocket Knife Technology.
* Author: ZhiHua_W <zhihua_wei@foxmail.com>
* Date: 2016/11/05 0015
* Time: 上午 10:23
* Project: Pkadmin后台管理系统
* Version: 1.0.0
* Power: 后台主页控制器
* ==========================================
*/
defined('BASEPATH') OR exit('No direct script access allowed');
class Admin extends Pkadmin_Controller {
public function __construct() {
parent::__construct();
$this -> load -> model('login_model', 'admin');
$this -> load -> library('pagination');
}
/**
* Pkadmin 后台首页action
*/
public function index() {
$this -> load -> view('admin.html', $data);
}
}
后台控制器继承后台父类控制器,前台控制器集成前台父类控制器,同样的在各自视图文件夹中建立相应的视图文件即可是想前后端的完美分离。
更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。
# CI框架
# 前后端
# 分离
# CI框架入门示例之数据库取数据完整实现方法
# php ci框架中加载css和js文件失败的解决方法
# CI框架中site_url()和base_url()的区别
# CI框架中libraries
# helpers
# hooks文件夹详细说明
# php CI框架插入一条或多条sql记录示例
# php ci框架验证码实例分析
# CI框架中cookie的操作方法分析
# CI框架开发新浪微博登录接口源码完整版
# CI框架Session.php源码分析
# CI框架自动加载session出现报错的解决办法
# 如何解决CI框架的Disallowed Key Characters错误提示
# CI框架源码阅读
# 系统常量文件constants.php的配置
# 管理系统
# 放在
# 后端
# 加载
# 在这里
# 夹中
# 上午
# 首页
# 程序设计
# 进阶
# 相关内容
# 大家都
# 一句
# 就不
# 不是很
# 我把
# 感兴趣
# 去看
# 给大家
# 我将
相关文章:
湖北网站制作公司有哪些,湖北清能集团官网?
PHP 500报错的快速解决方法
活动邀请函制作网站有哪些,活动邀请函文案?
如何快速生成凡客建站的专业级图册?
网站代码制作软件有哪些,如何生成自己网站的代码?
建站之星下载版如何获取与安装?
建站之星如何助力网站排名飙升?揭秘高效技巧
如何设计高效校园网站?
如何在云指建站中生成FTP站点?
如何在景安服务器上快速搭建个人网站?
黑客如何利用漏洞与弱口令入侵网站服务器?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
如何通过NAT技术实现内网高效建站?
网站图片在线制作软件,怎么在图片上做链接?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
香港服务器部署网站为何提示未备案?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
存储型VPS适合搭建中小型网站吗?
建站之星与建站宝盒如何选择最佳方案?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何用5美元大硬盘VPS安全高效搭建个人网站?
如何快速配置高效服务器建站软件?
制作网站怎么制作,*游戏网站怎么搭建?
如何通过可视化优化提升建站效果?
高防服务器租用指南:配置选择与快速部署攻略
建站主机与服务器功能差异如何区分?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
测试制作网站有哪些,测试性取向的权威测试或者网站?
怀化网站制作公司,怀化新生儿上户网上办理流程?
c++ stringstream用法详解_c++字符串与数字转换利器
如何在阿里云香港服务器快速搭建网站?
长沙做网站要多少钱,长沙国安网络怎么样?
香港网站服务器数量如何影响SEO优化效果?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
高端企业智能建站程序:SEO优化与响应式模板定制开发
已有域名如何快速搭建专属网站?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
建站之星2.7模板快速切换与批量管理功能操作指南
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
如何用西部建站助手快速创建专业网站?
高性价比服务器租赁——企业级配置与24小时运维服务
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
如何在Golang中指定模块版本_使用go.mod控制版本号
网站网页制作专业公司,怎样制作自己的网页?
个人摄影网站制作流程,摄影爱好者都去什么网站?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
*请认真填写需求信息,我们会在24小时内与您取得联系。