php框架单一入口优缺点,php框架单一入口有哪些

单一文件入口应用,所有请求都是通过index.php接收并转发到功能代码中去,因此一些事情变得简单多了,如数据安全性检查,访问统计等。

826c4d7711789b9e8b14ee40e29f08d5.png

当前比较流行的一些PHP开发框架如Laravel、ThinkPHP等都是采用的单一入口模式。

下面咱们来实现一个简单版的单一文件入口框架,包括MVC架构、URL路由的实现。

MVC架构(推荐学习:PHP编程从入门到精通)

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

可看到经过我们的路由后输出不同内容!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值