博主信息
博文 62
粉丝 7
评论 2
访问量 74172
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP 框架之路由与控制器以及composer的安装
我是郭富城
原创
1032人浏览过

PHP 框架之路由与控制器

1. 为什么要使用路由

  • 刚刚开始学 PHP 时,我们写过 http://php.cn/active.php?id=1 之类的 URI,使用 GET 方式获取参数。这样的 URI 有两个缺点,一是容易被 SQL 注射攻击,二是维护性可读性差。大家可以比较www.mysite.com/active/1哪一种更具备可读性。
  • 一个 PHP 初学者,刚开始做项目,项目做着做着规模做大了,常常这个 PHP 页面分发另一个 PHP 页面用 GET 方法传值,有时传的值还不止一个,时间一久,你的 WEB 项目,N 个 PHP 页面宛如一个复杂的蜘蛛网,让你难以维护。一旦有修改,会涉及很多 PHP 文件,工作量很大。

    MVC 的单一入口机制可以解决维护难的问题,路由就是一套映射,可以让你一个 URI 对应一个方法

2. 如何实现一个路由,解析出控制器的方法和参数

  • 这是一个员工上班打卡的控制器
  1. <?php
  2. //这是一个员工上班打卡的控制器
  3. class StaffsController
  4. {
  5. public function getStaff($time, $name)
  6. {
  7. return "上班打卡时间:$time,员工姓名:$name";
  8. }
  9. }
  10. // http://php.edu/5.14/route.php/staffs/getstaff/time/0830/name/xiaomei
  11. // 1. 解析URI PATHINFO
  12. // echo $_SERVER['PATH_INFO'];
  13. $pathinfo = (array_values(array_filter(explode('/', $_SERVER['PATH_INFO']))));
  14. // 2. 解析出控制器
  15. $controller = ucfirst(array_shift($pathinfo)) . 'Controller';
  16. // echo $controller;
  17. // 3. 解析出控制器中的方法
  18. $action = array_shift($pathinfo);
  19. // echo $action;
  20. // print_r($pathinfo);
  21. // echo count($pathinfo);
  22. // die();
  23. // 4.解析出参数
  24. $cs = [];
  25. for ($i = 0; $i < count($pathinfo); $i += 2) {
  26. if (isset($pathinfo[$i + 1])) {
  27. $cs[$pathinfo[$i]] = $pathinfo[$i + 1];
  28. }
  29. }
  30. // print_r($cs);
  31. // 5. 调用控制器中的方法
  32. $staff = new StaffsController();
  33. echo $staff->$action(...array_values($cs));
  34. //输出:上班打卡时间:0830,员工姓名:xiaomei

3. composer的安装

  • Composer 是 PHP 的一个依赖管理工具。我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用一个命令将其他人的优秀代码引用到我们的项目中来。

  • Composer 默认情况下不是全局安装,而是基于指定的项目的某个目录中(例如 vendor)进行安装。

  • Composer 需要 PHP 5.3.2+ 以上版本,且需要开启 openssl。

  • Composer 可运行在 Windows 、 Linux 以及 OSX 平台上。

3.1 Wondows 平台

  • Wondows 平台上,我们只需要下载https://getcomposer.org/Composer-Setup.exe后,一步步安装即可。
  • 需要注意的是你需要开启 openssl 配置,我们打开 php 目录下的 php.ini,将 extension=php_openssl.dll前面的分号去掉就可以了。
  • 安装成功后,我们可以通过命令窗口(cmd) 输入 composer --version 命令来查看是否安装成功:
  • 接下来我们可以更改Packagist为国内镜像:
    composer config -g repo.packagist composer https://packagist.phpcomposer.com

    3.2 其他平台

  • 大家可以百度

4. 总结

每一次调用控制器的某个方法时,函数都会把参数以关联数组的形式传入,做到“业务逻辑”和“表现”的分离,但是感觉这种分离还不是最好的,因为前端开发人员仍然需要面对甚至处理PHP代码,后端开发人员也有和前端人员沟通的成本,应该还有更好的方式。

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:开发模式没有最好的, 只是最合适的, 咱们学的是全栈开发, 本身就是前后端全打通
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学