PHP中MVC有关的请求分发器原理(前端控制器)原理

MVC中的请求分发器,说白了就是前端的控制器即,做一个控制器,用作于浏览器发送请求时候反馈数据的控制器,例如:

index.php此文件整合了控制器和模型类。目的是在很多控制器的共性基础之上,总结抽离,构成一个更为简洁的形式,前提是请求中必须都带上“控制器信息”.每个请求(链接、提交)都应该至少带有2个信息,?c=控制器名&a=动作名(函数方法名字),如果没有带,则会使用默认的控制器和方法.

<?php 
// 文件命名为index.php
require ‘基础控制器类’;
require ‘基础模型类’;  //有则加载,无就不用加载

$ctrler=!empty($_GET['a'])?$_GET['a']:'默认的控制器/模型器 名字';
$ctrler_model_name=$ctrler.'model'; //模型文件名字  

//$ctrler为控制器的名字,$_GET['a'] 为从请求端发过来的参数值 在请求端那里提前加好对应的控制器名字

$ctrler_name=$ctrler.'ctrler';//给控制器的名字补全  下方实例化对象的时候用得到

require './'.$ctrler.'ctrler.class.php';//动态加载控制器 此处我默认每个控制器或者模型器的后缀为'.class.php' 
//然后用字符串把它们连接起来 当请求发送过来的时候 就会自动调用这个控制器的名字
require './'.$ctrler_model_name.'.class.php'; // 动态加载模型器 MVC的模式就是控制器根据请求来决定调用什么数据显示到view前端页面




//当模型类和控制器类都加载成功就可以 实例化对象来根据发送过来的请求,分发控制显示数据

$obj=new $ctrler_name();//因为数据是用控制器调用才显示的,所以需要对控制器中的对象进行实例化并进行函数的动态调用(此语句 ,涉及到可变类,可变函数)
$action = $ctrler.'Action';
// 默认在这个对应的控制器中 所有的函数名都是以Action结尾 例如:deleteAction();
$obj->$action();// 动态函数

这样就完成了 一个请求分发器

?>

猜你喜欢

转载自blog.csdn.net/qq_36622490/article/details/84452822