位置: 编程技术 - 正文

自制PHP框架之路由与控制器(搭建自己的php框架)

编辑:rootadmin

推荐整理分享自制PHP框架之路由与控制器(搭建自己的php框架),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php框架搭建网站教程视频教程,自制php框架之路图片,php框架搭建网站教程视频教程,怎么用php写一个简单框架,自制php框架之路图片,怎么做php框架,自制php框架之路图,怎么做php框架,内容如对您有帮助,希望把文章链接给更多的朋友!

我们为什么要使用路由?原因1:一个更漂亮的URI

1.URI的改进

刚刚开始学PHP时,我们一定写过blog.php&#;id=1之类的URI,使用GET方式获取参数。这样的URI有两个缺点,一是容易被SQL注射攻击,二是维护性可读性差,大家可以比较下面两种URI哪一种更具备可读性。

上面URI是我们初学PHP最常用的。

这种URI是目前最流行的URI,举个例子,比如很多读书类,电影类网站,都使用了这样的URI,这样的URI要比index.php&#;a=1&b=2&c=3&d=4....要简洁很多。

2.实现方法

在WEB项目的根目录下写一个.htaccess文件

重写规则,让域名后面的字符串直接做为一个参数传入index.php,这样index.php就成为了你整个WEB应用的中心,定义了“请求和响应的映射”。

原因2:单一入口机制的易维护性

1.路由数组

一个PHP初学者,刚开始做项目,项目做着做着规模做大了,常常这个PHP页面给另一个PHP页面用GET方法传值,有时传的值还不止一个,时间一久,你的WEB项目,N个PHP页面宛如一个复杂的蜘蛛网,让你难以维护。一旦有修改,会涉及很多PHP文件,工作量很大。

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

2.获取参数

我们在浏览器里输入:www.mysite.com/blog/1后,path变量为/blog/1。使用ltrim函数删除左边的斜杠,然后使用explode把字符串拆解成数组。

核心代码如下:

自制PHP框架之路由与控制器(搭建自己的php框架)

unset函数可以销毁数组中key和value,但是并不会重建索引,所以path_arr[0]是要调用的控制器类和方法名,path_arr[1]或者path_arr[1..N]就作为传入方法的参数。

重定向和错误页面是WEB系统中最常见的,如果不用路由机制,你可能要没完没了的重复写重定向或者错误页面的显示或者跳转代码,有了路由,只需要一句话就可以完成。

原因3:减少资源的消耗

MVC采用了控制器(controller)来响应请求(request),每次请求来时,应该在指定的一个PHP文件中初始化这个控制器,而不是分别在不同的PHP文件中做初始化工作,这样可以减少资源的消耗。

是不是一定要用控制器?方案1:不用控制器

我们现在路由数组里添加一项,value不是一个字符串,而是一个匿名函数(Closure)

这里的route[f]是一个匿名函数,并不是一个控制器类的方法,所以,我们要把上一节路由代码做一下修改:

方案2:使用控制器

每一次都require一个html页面是一件很不优雅的事情,所以我们写一个render函数

接上一篇博客,我们知道每个URI对应了一个方法,但是我们常常遇到这样的问题:

用不用控制器,取决于你的业务复杂度。个人建议使用控制器,但是对于业务很简单的页面跳转或检查,可以直接写在一个匿名函数里。

控制器里写些什么?

我们也许写过这样的代码:

这样把界面的代码嵌入的写法是非常难以维护的,也是很多开发人员(包括我)最厌恶的写法,因为这种写法并没有做好界面与业务逻辑的分离,所以我们需要使用视图。

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

自制PHP框架之模型与数据库 什么是模型?我们的WEB系统一定会和各种数据打交道,实际开发过程中,往往一个类对应了关系数据库的一张或多张数据表,这里就会出现两个问题。1.

自制PHP框架之设计模式 为什么要使用设计模式?设计模式,我的理解是为了达到可复用这个目标,而设计的一套相互协作的类。感兴趣的读者可以阅读《DesignPatterns:ElementsofReus

PHP中include和require的区别实例分析 先编辑command.php文件echo'hello'.PHP_EOL;然后编辑console.php文件for($i=1;$i=3;++$i){require'command1.php';}原本想要包含并执行这个echo,没想到写错了文件名,如果是req

标签: 搭建自己的php框架

本文链接地址:https://www.jiuchutong.com/biancheng/290932.html 转载请保留说明!

上一篇:PHP-CGI远程代码执行漏洞分析与防范(phpcgi远程代码执行漏洞)

下一篇:自制PHP框架之模型与数据库(php框架yii)

  • 企业所得税汇算清缴
  • 小规模纳税人月收入多少免征增值税
  • 消防工程改造怎么做账务处理
  • 以前年度多缴纳的企业所得税退还
  • 所得税报表的营业成本包括管理费用吗
  • 不动产销售额怎么填
  • 虚开普票的立案标准
  • 小微企业所得税税率2.5% 10% 25%
  • 2021年成本类科目
  • 中小企业工会经费怎么算
  • 工商年报的应交税费包含哪些
  • 事业单位退休职业年金发放多少个月
  • 房地产企业融资存在的问题
  • 车间工人加班餐图片
  • 奖金部分
  • 代扣代缴个人所得税现金流计入哪里
  • 专用发票上注明的税额是什么
  • 信息技术服务在开票系统怎么选
  • 资产无偿划转怎么开具发票
  • 外账的银行存款怎么处理
  • 公司室内装修
  • 在Linux系统中安装了一块虚拟磁盘大小的2G
  • 社保多交怎么办理
  • 结转本月主营业务收入800000元,营业外收入2500元
  • 什么是电流定律
  • 在win7系统中将打开窗口拖到屏幕顶端
  • 跨年度费用应如何计算
  • 公司取得发明专利证书股票大涨
  • 金银首饰在哪个软件买
  • PHP:pg_meta_data()的用法_PostgreSQL函数
  • 工厂采购部门
  • 补缴以前年度公积金误入当年费怎么办
  • 人民日报公共事件的报道问题
  • jsp页面构成
  • 固定资产报废如何记账
  • vue this.$el
  • 固定资产原值和净值在报表哪里看
  • 以发行股票作为对价取得企业的股权
  • 个体户给对方公司开发票会怎样
  • 开具红字增值税普通发票
  • 开票地址必须和营业执照上一样吗少个字号可以吗
  • 预付房租摊销从哪月算起
  • 购入固定资产印花税税目是什么
  • 土地使用权入账务处理
  • 个人独资企业缴纳社保享受优惠么
  • 销售单位收入和税收
  • 长期待摊费用的摊销期限应该是
  • 生物性资产折旧处理
  • 管理费用结转有余额吗
  • mysql检查表是否存在
  • mysql的ip怎么看
  • centos7安装MySQL5.6
  • winxp/win2000/win2003
  • linux安装vmvare
  • Win7系统设置屏保密码
  • 电脑连不上网怎么解决
  • win8设备管理器在哪里打开
  • xp如何升级到sp3
  • linux做成服务
  • pascl32.exe - pascl32是什么进程 有什么用
  • win7纯净版系统多大
  • win10系统日历怎么放在桌面
  • linux ii
  • win7安装要求配置
  • Android 让EditText失去焦点避免自动弹出输入法
  • pycharm如何使用
  • unity用lua开发
  • jquery .val
  • 举例详解民法典第502条
  • jQuery实现可以控制图片旋转角度效果(附demo源码下载)
  • python并发和并行
  • javascript初级教程
  • 河南省国税电子普通发票发票真伪查询系统
  • 个税更正申报如何导出大厅申报表
  • 退休个人所得税专项附加扣除减免
  • 地方税务网上申报怎么弄
  • 四川4050社保补贴政策什么时候发放
  • 进一步深造是什么意思
  • 纳税人不办税务许可证
  • 航天信息的金税盘开票要怎么调格式
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设