建站堂

 找回密码
立即注册
热搜: 活动 交友 discuz

[PHP编程] PHP高级编程-回归原生态-框架是如何运行的?

[复制链接]
发表于 2022-5-14 13:18:31 | 显示全部楼层 |阅读模式
"[size=".(7 - 1)."]"4.5 框架是如何运行的

基本很多项目的开发都是基于PHP开源框架的,或者至少都是基于框架的,不管这个框架是内部的,还是自己个人编写的,还是来自开源社区的。理解框架是如何运行是很有帮助的,注意这里说的是理解,而不是了解。说白了,就是你不单要知道它是怎么样的,还要明白为什么会这样。


不同框架的设计思路是不一样的,但最后核心都会落在如何把全部需要使用到的类、对象、资源更好地组织起来,在性能上达到最优,在易用性上达到最高。理解框架是如何运行的,不仅能帮助我们理清框架的设计思路,还能让我们编写更能符合框架制定的标准和规范的代码,甚至在恰当的时候提升我们专注框架或者自主设计微架构的能力。在与开发工程师交流过程中,我发现还是有很多同学对于这一块几乎没什么认识,这让我想起木兰诗里的那句“同行十二年,不知木兰是女郎。”


如果使用框架开发了多年项目,却不知道框架内部是如何运行的话,我觉得同样是有点可悲的。所以,我觉得有必要在这里简单分享一下。


"[size=".(7 - 1)."]"4.5.1 多种调用方式

PHP是一门动态解释性脚本语言,它真的很动态,很灵活,并且它是弱类型的。你看,对于一个字符串变量$var = "abc",你可以把它赋值为整型,接着又可以把它设置为一个数组,还可以把它变为布尔值,甚至还可以改为类对象实例。这都没任何问题!


根据我的理解,框架所做的事情,概括起来就是:对于将要访问的链接或功能服务,先按路由规则进行解析,提取待执行的类名称和方法名称。然后对待执行的操作进行调用,在执行前后还需要将过滤、预处理、回调、事件侦听等环节串联起来。最后,把执行结果以合适的方式返回给客户端,可以是页面输出,也可以是接口数据返回。当然,还要有异常处理的机制。


这里,重点讲如何调用待执行的操作。即给定一个类名和一个类的方法名,如何对其进行动态调用。


假设,我们已经有这样一个BookController类,通过getHotList()方法可以获取一些热门的书籍。为专注于如何调用,而非实现,所以这里简单模拟了一些数据。同时为简化,此类方法的结果将通过接口请求返回数据给客户端,而不是返回输出一个页面。BookController类代码如下:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|建站堂 ( 沪ICP备2021003614号-2 )

GMT+8, 2024-5-19 15:07 , Processed in 0.190819 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表