php前后端分离的框架,如何使用CI框架实现框架前后端分离
这篇文章主要介绍了CI框架实现框架前后端分离的方法,结合实例形式较为详细的分析了CI框架前后端分离的相关视图、控制器设置与扩展等操作技巧,需要的朋友可以参考下
本文实例分析了CI框架实现框架前后端分离的方法。分享给大家供大家参考,具体如下:
我们在使用CI框架开发中(或者使用所有的其他框架开发中),总是习惯于将所开发项目的前端和后台分离开来,将各自的控制器、模型或视图放到不同的文件夹中。在这一点上ThinkPHP框架要比CI框架更要方便一些。这篇博文我们就讲述如何实现根据CI框架开发将前后端实现分离。(本文以本人开发的Pkadmin后台管理系统为例,Pkadmin后台管理系统是基于Codeigniter_v3.1.0框架和Olive Admin后台模版进行开发的,在这里就不过多的介绍,感情趣的朋友可以到Github进行查看欢迎大家指正相互学习。
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文件)
/**
* ==========================================
* Created by Pocket Knife Technology.
* Author: ZhiHua_W
* 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、扩展控制器
扩展控制器主要是为了生成前台后台的父控制器方便与进行操作继承(为了方便可以很快明白其原理,代码有所精简)。
/**
* ==========================================
* Created by Pocket Knife Technology.
* Author: ZhiHua_W
* 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(后台首页)控制器文件进行输出测试(代码有所删除精简)。
/**
* ==========================================
* Created by Pocket Knife Technology.
* Author: ZhiHua_W
* 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);
}
}
后台控制器继承后台父类控制器,前台控制器集成前台父类控制器,同样的在各自视图文件夹中建立相应的视图文件即可是想前后端的完美分离。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
php前后端分离的框架,如何使用CI框架实现框架前后端分离相关推荐
- 前后端分离的用户验证原理及Spring Boot + JWT的框架搭建(附完整的框架代码)之二
本篇承接上一篇,关于Session以及JWT Token参考: 前后端分离的用户验证原理及Spring Boot + JWT的框架搭建(附完整的框架代码)之一 框架整体描述 框架使用Spring Bo ...
- cbnertvirtual内部框架下载_快速开发,支持前后端分离,微服务框架
JeecgBoot JeecgBoot是一款基于BPM的低代码平台,零代码开发!采用前后端分离架构,支持微服务: SpringBoot 2.x,Ant Design&Vue,Mybatis-p ...
- 前后端分离项目_七个开源的 Spring Boot 前后端分离项目,一定要收藏
来自公众号:江南一点雨 前后端分离已经在慢慢走进各公司的技术栈,根据松哥了解到的消息,不少公司都已经切换到这个技术栈上面了.即使贵司目前没有切换到这个技术栈上面,松哥也非常建议大家学习一下前后端分离开 ...
- 前后端部署在两台服务器 服务器配置要求_漫谈前后端分离
前言--浅谈前后端 在我的脑海中一提到前端和后端,基本上第一个出现的区别点就是:后端是跟数据库跟服务器打交道的,前端是跟浏览器打交道的.似乎没有什么问题,大家都这么认为的.当然这没有什么错,我们一直以 ...
- Django框架学习之网上商城项目一(后端设计)
目录 一.项目需求分析 1.项目介绍 1.技术难点 2.系统功能 3.项目环境 4.后台管理页面 二.数据库模型设计 一.准备工作 二.用户认证数据库模型设计 1. app/users/models. ...
- 后端传输大量log数据_京东智联云MySQL读写分离最佳实践 ,轻松搞定数据库高性能扩展...
数字化时代,数据库对任何企业而言都是其应用的核心资源.MySQL作为当前最流行的关系型数据库,虽然是开源软件,但是其简单易懂.易于部署管理,且具有ACID特性.强大的SQL查询等特点,被各种业务系统作 ...
- 后端选型中不同语言及对应的Web框架
在进行后端选型的时候,实际上我们要选择的是一个框架.后端领域所使用的技术和框架已经趋于稳定,我们只需要按我们的需要选择所需要的框架.当存在多个框架适合时,我们再选择适合的语言.不得不指出的是,当我们喜 ...
- 探讨后端选型中不同语言及对应的Web框架
在进行后端选型的时候,实际上我们要选择的是一个框架.后端领域所使用的技术和框架已经趋于稳定,我们只需要按我们的需要选择所需要的框架.当存在多个框架适合时,我们再选择适合的语言.不得不指出的是,当我们喜 ...
- 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | AMS 启动前使用动态代理替换掉插件 Activity 类 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
最新文章
- 【Spring】基于XML的IOC案例
- 01 python爬虫
- 如何在Python中解析YAML文件
- STM32F4 HAL库开发 -- NVIC 中断优先级管理
- PyTorch + NumPy这么做会降低模型准确率,这是bug还是预期功能?
- Python 快速入门
- HBase编程 API入门系列之create(管理端而言)(8)
- MySQL 5.6, 5.7并行复制测试(二)(r12笔记第10天)
- CF618F Double Knapsack 构造、抽屉原理
- java计算点在圆内外_java – 在O((n s)log n中计算圆交叉点)
- 数据结构 /ord ;集合;dict()
- Uboot下SPI FLASH的添加(SPI 控制器采用软件模拟的方式)
- 软件测试电脑功率,姗姗来迟的测试——功率计实测电脑耗电情况之三【i3 2100 + H61 配置篇】...
- java语言c语言表情包_c语言表情包 - c语言微信表情包 - c语言QQ表情包 - 发表情 fabiaoqing.com...
- C++定义点和矩形求矩形面积周长
- python translate 中文_Python translate()方法
- php主机字节序和网络字节序
- HANA 存储过程 YTD
- lm曲线公式推导_宏观经济学 - LM曲线
- Arduino宿舍门禁,实现刷卡(NFC)开门
热门文章
- python帮助和文档、希腊字母对照表
- C# 静态类与非静态类、静态成员的区别
- C++默认拷贝构造函数
- @Validated嵌套校验
- 质因数是什么意思?快速分解的渠道讲解
- OpenFOAM学习链接
- mysql_fetch_row ()出现段错误_段段天刀手游古董鉴定大全上线~最全古董鉴定攻略...
- 少儿美术课儿童画之水彩画第2集《花尾巴的大孔雀》
- 如何将适用于 Docker 的 ONLYOFFICE 文档更新到 v7.2
- 爱奇艺算法工程师实习生面试总结