当前位置:Gxlcms > PHP教程 > php框架单一入口有哪些

php框架单一入口有哪些

时间:2021-07-01 10:21:17 帮助过:33人阅读

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

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

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

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

Controller控制器是Model和View两者交互的中介,Model模型层负责读写数据,View视图层负责视图处理输出。

URL路由原理

基本思路就是浏览器端通过URL字符串提供控制器类的名字和方法的名字,PHP据此找到对应的类和方法。

为方便测试,把所有功能写一个文件,实际框架每个类为一个文件,入口一个文件。

  1. <?php/**
  2. * PHP单一文件框架设计简析
  3. * 1、MVC架构实现
  4. * 2、URL路由原理
  5. *///URL路由原理/**
  6. * 路由作用
  7. * 获取url中的c和a变量,执行c类对应的方法a,实现不同的路由
  8. */class App {
  9. public $c;
  10. public $a;
  11. public function run()
  12. {
  13. $c = isset($_GET['c']) ? $_GET['c'] : "Index"; //url提供类名字的变量名
  14. $a = isset($_GET['a']) ? $_GET['a'] : "Index"; //url提供方法名字的变量名
  15. $c .= "Controller";
  16. if( class_exists($c) && method_exists($c, $a) ) {
  17. $o = new $c();
  18. $o->$a();
  19. }else{
  20. echo "error";
  21. exit();
  22. }
  23. }}//MVC架构/**
  24. * 模型层
  25. * 获取应用数据作用
  26. */class Model {
  27. //TODO:link db、get data}/**
  28. * 视图类
  29. * 编译、缓存及显示模板
  30. */class View {
  31. public function render($tpl)
  32. {
  33. echo "Hi, ".$tpl; //TODO:具体html模板
  34. }}/**
  35. * 控制器
  36. * 所有功能控制器继承该类
  37. */class Controller {
  38. public $view;
  39. public $model;
  40. public function __construct()
  41. {
  42. $this->view = new View();
  43. $this->model = new Model();
  44. }
  45. public function display($tpl = "")
  46. {
  47. echo $this->view->render($tpl);
  48. exit();
  49. }}//具体功能开发class IndexController extends Controller {
  50. /**
  51. * 网站首页
  52. */
  53. public function Index()
  54. {
  55. $this->display("Index");
  56. }
  57. /**
  58. * 网站列表
  59. */
  60. public function List()
  61. {
  62. $this->display("List");
  63. }}//单一文件入口$app = new App();$app->run();?>

以上代码保存为index.php,然后浏览

http://localhost/index.php?c=Index&a=Index

http://localhost/index.php?c=Index&a=List

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

以上就是php框架单一入口有哪些的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行