PHP单一文件入口框架简析
2017-08-22 13:17
507 查看
单一文件入口应用,所有请求都是通过
当前比较流行的一些PHP开发框架如
下面咱们来实现一个简单版的单一文件入口框架,包括MVC架构、URL路由的实现。
MVC架构
MVC架构
URL路由原理
基本思路就是浏览器端通过URL字符串提供控制器
为方便测试,把所有功能写一个文件,实际框架每个类为一个文件,入口一个文件。
以上代码保存为
http://localhost/index.php?c=Index&a=Index
http://localhost/index.php?c=Index&a=List
可看到经过我们的路由后输出不同内容!
作者:dodos
链接:http://www.jianshu.com/p/d4ce07da9266
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
index.php接收并转发到功能代码中去,因此一些事情变得简单多了,如数据安全性检查,访问统计等。
当前比较流行的一些PHP开发框架如
Laravel、
ThinkPHP等都是采用的单一入口模式。
下面咱们来实现一个简单版的单一文件入口框架,包括MVC架构、URL路由的实现。
MVC架构
MVC架构
Controller控制器是
Model和
View两者交互的中介,
Model模型层负责读写数据,
View视图层负责视图处理输出。
URL路由原理
基本思路就是浏览器端通过URL字符串提供控制器
类的名字和
方法的名字,PHP据此找到对应的类和方法。
为方便测试,把所有功能写一个文件,实际框架每个类为一个文件,入口一个文件。
<?php /** * PHP单一文件框架设计简析 * 1、MVC架构实现 * 2、URL路由原理 */ //URL路由原理 /** * 路由作用 * 获取url中的c和a变量,执行c类对应的方法a,实现不同的路由 */ class App { public $c; public $a; public function run() { $c = isset($_GET['c']) ? $_GET['c'] : "Index"; //url提供类名字的变量名 $a = isset($_GET['a']) ? $_GET['a'] : "Index"; //url提供方法名字的变量名 $c .= "Controller"; if( class_exists($c) && method_exists($c, $a) ) { $o = new $c(); $o->$a(); }else{ echo "error"; exit(); } } } //MVC架构 /** * 模型层 * 获取应用数据作用 */ class Model { //TODO:link db、get data } /** * 视图类 * 编译、缓存及显示模板 */ class View { public function render($tpl) { echo "Hi, ".$tpl; //TODO:具体html模板 } } /** * 控制器 * 所有功能控制器继承该类 */ class Controller { public $view; public $model; public function __construct() { $this->view = new View(); $this->model = new Model(); } public function display($tpl = "") { echo $this->view->render($tpl); exit(); } } //具体功能开发 class IndexController extends Controller { /** * 网站首页 */ public function Index() { $this->display("Index"); } /** * 网站列表 */ public function List() { $this->display("List"); } } //单一文件入口 $app = new App(); $app->run(); ?>
以上代码保存为
index.php,然后浏览
http://localhost/index.php?c=Index&a=Index
http://localhost/index.php?c=Index&a=List
可看到经过我们的路由后输出不同内容!
作者:dodos
链接:http://www.jianshu.com/p/d4ce07da9266
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- 【Day50】PHP单一文件入口框架简析
- PHP单一文件入口框架
- 【ci框架】单一入口文件index.php分析
- PHP 单一入口框架设计简析
- CodeIgniter框架源码学习之框架入口文件--index.php
- CI 框架源码 入口文件 index.php 即程序开始执行的地方
- YII框架中php入口文件隐藏
- CI框架源码解析一之入口文件index.php
- PHP框架开发教程(三) 入口文件
- zhphp framework 框架(一)入口文件
- 转php单一入口框架设计
- CI框架源码解读(1)-入口文件index.php
- CI 框架 入口文件 index.php 程序开始的地方
- CI框架学习笔记(二) -入口文件index.php
- CodeIgniter框架——源码分析之入口文件index.php
- CI框架源码完全分析之入口文件index.php
- CI 框架怎么去掉隐藏入口文件 index.php
- php单一入口框架设计
- CI框架学习之--隐藏入口文件-index.php
- PHP MVC开发之单一入口文件(路由文件)