mvc工作原理,大前端的赶紧滚

[复制链接]
查看: 5434   回复: 7
发表于 2022-4-18 19:42:11 | 显示全部楼层 |阅读模式
某某php框架是运行在php CGI模式下的网页项目开发框架,采用流行的php面向对象开发,mvc三个核心类架构的单入口开发框架。

在mvc架构中,controller控制器的角色是负责请求路径的转换,调用对应的控制器实例化为对象后,激活其中的指定方法响应用户请求的。

所以我们大多数的开发代码都是在编写控制器类的方法内容。需要理解的是,当用户通过浏览器访问一个路径时,实际上就是根据路径找到对应的控制器方法实例化为对象的过程。实例化的具体代码是写在框架核心的,由核心根据请求路径针对性的实例化对应控制器类和调用对象中的方法而已。所以原理上,一个超链接请求只能请求一个控制器方法,当然根据业务需要该方法可以内部调用更多的其他方法等等。

也就是说,我们在开发代码时,使用$this关键字调取的任意方法,都是在未实例化之前的控制器核心类中的方法。而控制类被实例化是根据用户发起请求的超链接针对性实例化控制器类读取对象当中特定方法实现业务逻辑的。

所以,在开发代码过程中,一个方**否能被超链接请求读取得到,关键点就是上面的理解,如果理解了一个超链接就是一个实例化控制器方法的操作,那么如果该方法需要被用户访问到,则必然是public修饰符的公开放方法,而private protected修饰符的方法,是实例化对象无法直接读取的。只能在未实例化的代码编写中,使用$this关键字内部调用而已。

充分理解了其中原理,开发者可以很好的规划自己哪些控制器方法提供超链接访问,哪些方法只能其他控制器方法内部调用,哪些方法只能本类控制器调用了。

在mvc架构中,model模型类的角色是与数据库业务相关的核心类。其只能在控制器中被开发者直接实例化使用。比如 $db = M();为本框架最简单直接的实例化一个核心模型类的方式。

但要理解到:模型类是框架核心提供的,主要目的就是在规范开发者编写sql语句。以及防止sql注入等主要目的。所以如果只是简单的CURD操作,推荐直接实例化核心模型类即可。不需要自己编写自定义模型类。

而如果需要复杂的关联查询,以及入库前的表单验证等等,可以自定义一个模型类,继承于核心模型类即可。

也就是自定义模型类的编写是可选的。不推荐开发者直接编写原生sql语句读取数据库资源。原因已经在php工作模式章节中讲解,大多数项目的瓶颈不在nginx和php,而是在不规范的sql语句,以及不合理的数据库索引导致的。



在mvc架构中,view视图类:实际上当前主流前后端分离的项目,例如采用vue+php的项目,mimiphp框架的左右主要是提供json格式的字符串数据给前端vue自行渲染。所以view视图类几乎用不到了。但传统网页开发当中,view视图类的目的就是为了前后端分离而做的规划。只不过分离不够彻底。编写前端页面的开发者不需要掌握php相关知识,只需要熟悉简单的模板语法就可以开发漂亮的网页页面效果。

但要充分理解的是,js代码是运行在浏览器客户端的。对于php服务器来说,任何js,html,css代码都只是普通字符串而已。也就是模板当中的模板语**被php解析以外,其他例如js变量等,都不是在服务器执行的。需要浏览器加载完成整个页面数据后,由浏览器中的js引擎才能正确解析js当中的变量信息。

还需要理解一点就是:json字符串是任意逻辑语言都能正常解析的特殊格式字符串,也就是php同样可以格式化json字符串为php数组和php对象,js也同样可以格式化json字符串为js对象.

但不区分语言通用的是json字符串,而格式化后的各种语言的json对象却是不通用的。所以要发送一个json数据给其他语言,只能是json字符串,而不是特定语言的json 对象。

json的出现,简化了api对接当中数据字符串格式化过程,比如xml同样也是多语言支持格式化的数据格式,但却没有json字符串简便。所以推荐以后API对接当中采用json字符串方式对接。







是你来说dom的,我才来说PHP跟dom没有关系,然后你们就来说后端可以处理dom,问题就是比如人家讨论linux,你非要说exe,然后说linux跟exe没关系,然后抓住一点,wine被你吃了呀的口吻。。。。到头来第二个帖子就开始人身攻击说我受过伤能理解,最后说我只会百度,还是个工具人。。。
你们的逻辑思维能力和断章取义能力小弟实在佩服呀。也算是个人才


写前端原生基础,大前端的来喷,现在写后端工作原理,大前端的人又来喷。你们大前端跟女权男权一样,有意义吗?就喜欢无脑喷?大前端的赶紧滚


居然被个能写出全称SSR单词词组的人嘲笑初级了。。。。能不能好好说话?后端不是只有你node的,可懂?我在说PHP你来跟我扯dom,到底谁是小丑啊。


我不太想回复你的,多看看我的历史贴吧。很多技术大神就是被你们这种小丑折腾得隐退了。不过我只是喜欢反驳的那个,想让我破防走人?不存在的,心态好得很。


关键你第一句,就是dom,我在说php好吧。dom =document object model,文档对象模型。我的历史文章已经解释很清楚了。你虚心点学习下也不错,不要再来当小丑讨论自己不熟悉的领域


所以叫大前端的人不要参与讨论。你就跟凭什么linux不能运行exe?wine被你们吃了一样的道理。强行来解释一个讨论后端mvc架构的帖子找存在感有意义?


凡是发布技术论坛的帖子,哪有不装B的?隔壁论坛,知乎更严重好吧。这才是技术发展缓慢的根本原因,为什么这么多技术博客关闭评论懂了吧?关闭博客评论的意思就是:你看就行了,不看就滚。别来叽叽喳喳的无脑喷。但互动性的地方,在所难免,因为技术都是大家查资料自己摸索掌握的,其中的艰苦只有自己知道。但一些人喜欢分享出来,更多的一些人就如这些喷子,总认为自己花时间摸索掌握的才是宝贝,并且对其他不了解的嗤之以鼻孔。这是国内开发行业的正常现象







请看清楚重点,重点你已经把话题转移到质疑我只会百度,并且质疑百度的内容都是比我还不懂的人发的。你是有多优秀才会说出这种话出来的,首富怎么不是你呢?不合理啊
回复

使用道具 举报

 楼主| 发表于 2022-4-18 19:42:53 | 显示全部楼层
我在给自己编写的php框架写基础原理,顺便普及一下给大家。
你弄了个什么东西?还dom元素。。。服务器上的语言能理解什么是dom么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-18 19:43:11 | 显示全部楼层
好多字,不看,不看
回复 支持 反对

使用道具 举报

发表于 2022-4-18 19:43:30 | 显示全部楼层
挺好 顶一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-18 19:43:53 | 显示全部楼层
绑定
回复 支持 反对

使用道具 举报

发表于 2022-4-18 19:44:31 | 显示全部楼层
说的好!
字多不看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-18 19:45:22 | 显示全部楼层
面试八股文?mvc工作原理,大前端的赶紧滚

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-18 19:46:00 | 显示全部楼层
php的话,你用上thinkphp几天,这些就无师自通了
回复 支持 反对

使用道具 举报

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

本版积分规则