全球主机交流论坛

标题: mvc工作原理,大前端的赶紧滚 [打印本页]

作者: kaleok    时间: 2021-11-2 14:39
标题: mvc工作原理,大前端的赶紧滚
本帖最后由 kaleok 于 2021-11-2 18: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的?隔壁论坛,知乎更严重好吧。这才是技术发展缓慢的根本原因,为什么这么多技术博客关闭评论懂了吧?关闭博客评论的意思就是:你看就行了,不看就滚。别来叽叽喳喳的无脑喷。但互动性的地方,在所难免,因为技术都是大家查资料自己摸索掌握的,其中的艰苦只有自己知道。但一些人喜欢分享出来,更多的一些人就如这些喷子,总认为自己花时间摸索掌握的才是宝贝,并且对其他不了解的嗤之以鼻孔。这是国内开发行业的正常现象







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

作者: AD盖    时间: 2021-11-2 14:40
好多字,不看,不看
作者: optimism    时间: 2021-11-2 14:43
挺好 顶一下            
作者: TinyTiny    时间: 2021-11-2 14:47
绑定

作者: 电脑    时间: 2021-11-2 15:03
说的好!
字多不看
作者: mhsl    时间: 2021-11-2 15:11
面试八股文?
作者: sdqu    时间: 2021-11-2 15:14
php的话,你用上thinkphp几天,这些就无师自通了
作者: minlearnhbs    时间: 2021-11-2 15:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 15:50
minlearnhbs 发表于 2021-11-2 15:39
mvc工作原理就一句话:把dom元素当传统桌面widges处理,统统组件化和CS化,利用API通讯。这底下是设计原理 ...

我在给自己编写的php框架写基础原理,顺便普及一下给大家。
你弄了个什么东西?还dom元素。。。服务器上的语言能理解什么是dom么?
作者: minlearnhbs    时间: 2021-11-2 15:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: minlearnhbs    时间: 2021-11-2 15:59
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 16:05
minlearnhbs 发表于 2021-11-2 15:53
请打住:
你应该是受过伤了,https://443502.xyz/thread-910089-1-1.html
才会这么应激 ...

这不是打住不打住的问题。。。第一行就在说PHP,你却嗤之以鼻的dom元素回复,典型的不懂装懂,前端语言和后端语言都分不清楚还在这里杠什么呢?
作者: minlearnhbs    时间: 2021-11-2 16:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 16:07
minlearnhbs 发表于 2021-11-2 15:59
服务器上的语言能理解什么是dom么

怎么不能理解,server side rendering。

嗯嗯承认自己是大前端就好理解了嘛。。自己看看dom全称是什么。是不是java处理不了dom就是垃圾?python,go,php都没办法处理dom,因为他们都只能理解是普通字符串咋办?是不是都是垃圾?
作者: minlearnhbs    时间: 2021-11-2 16:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: minlearnhbs    时间: 2021-11-2 16:12
提示: 作者被禁止或删除 内容自动屏蔽
作者: minlearnhbs    时间: 2021-11-2 16:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: minlearnhbs    时间: 2021-11-2 16:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 16:21
minlearnhbs 发表于 2021-11-2 16:18
有些技术,只要了解了它的第一性原理。
只要加于一点实践,就可以一个月胜任专业的技术岗。

我不太想回复你的,多看看我的历史贴吧。很多技术大神就是被你们这种小丑折腾得隐退了。不过我只是喜欢反驳的那个,想让我破防走人?不存在的,心态好得很。
作者: minlearnhbs    时间: 2021-11-2 16:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: minlearnhbs    时间: 2021-11-2 16:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: 大魔王    时间: 2021-11-2 16:28
打起来 打起来
作者: minlearnhbs    时间: 2021-11-2 16:30
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 16:31
minlearnhbs 发表于 2021-11-2 16:23
好巧我也觉得技术方面你才是小丑。
而且丝毫不够虚心。

论技术,本身就是在交流,你藏着掖着当宝贝,然后别人发个相关帖子就各种讽刺,你又觉得你算什么个东西?
点赞收藏的人也有,不要以只认清高的认为大家都跟你一样好吧。
关键不符合论坛氛围,从最简单的linux命令开始,本论坛已经存在多篇你认为初级的文章教程。
倒是你这个家伙,纯粹就是来恶心人自己爽的键盘侠而已
作者: zuoridangnian    时间: 2021-11-2 16:32
快打一架,loc好久没瓜吃了
作者: kaleok    时间: 2021-11-2 16:33
minlearnhbs 发表于 2021-11-2 16:30
他性格不抗压。没办法。应该是受伤过多反抗没能赢过导致的。

我第一句那句不算是喷,就是也很想帮助他。 ...

关键你第一句,就是dom,我在说php好吧。dom =document object model,文档对象模型。我的历史文章已经解释很清楚了。你虚心点学习下也不错,不要再来当小丑讨论自己不熟悉的领域
作者: 海的尽头    时间: 2021-11-2 16:33
不服就干!
作者: 海的尽头    时间: 2021-11-2 16:35
技术没人看,吃瓜就很多人围观!
作者: minlearnhbs    时间: 2021-11-2 16:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: 李云龙    时间: 2021-11-2 16:41
你还真是个人才,来喝点地瓜烧
作者: minlearnhbs    时间: 2021-11-2 16:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: minlearnhbs    时间: 2021-11-2 16:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 16:56
minlearnhbs 发表于 2021-11-2 16:50
@kaleok

楼主,你说自己心态好,心态一定要保持住啊

你还起劲了是么?上一个打脸的人已经销声匿迹了。质疑我不会谷歌搜索的那一位。
你这是在php文章下谈dom的另一位,实在离谱,别把无知当个性
作者: flyqie    时间: 2021-11-2 16:56
本帖最后由 flyqie 于 2021-11-2 17:00 编辑
minlearnhbs 发表于 2021-11-2 16:50
@kaleok

楼主,你说自己心态好,心态一定要保持住啊


大前端代表着...语言没有前后之分?

能给个资料吗,难道和我理解的不一样?

多端统一啥时候跟 语言没有前后之分 扯上了...

"serverworks api" 你说的应该是sw吧,可是这玩意跟 语言没有前后之分 有啥关系吗,难道你想说fetch这边全部可以sw拦截在客户端处理(又想了下...你难道是想说在sw里从服务器拿数据然后把数据拼起来)?

SSR这个,你要是想反驳楼主说后端语言操作不了dom这个..也算能理解.

还有你之前说的"mvc工作原理就一句话:把dom元素当传统桌面widges处理,统统组件化和CS化,利用API通讯。这底下是设计原理。" ,你这个...可能是我理解能力有限,你说的应该是把cs那套挪到bs做分离把,可是这跟楼主说的 后端mvc 也没啥太大关系把,不过确实把v层省去了,但是有些业务先天他就不需要v层啊.
作者: minlearnhbs    时间: 2021-11-2 17:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: minlearnhbs    时间: 2021-11-2 17:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: 我心碎不了    时间: 2021-11-2 17:14
后端语言为啥不能操控dom?,webassembly是被你们吃了吗?
go rust编译成wasm不能操控dom?
作者: flyqie    时间: 2021-11-2 17:24
我心碎不了 发表于 2021-11-2 17:14
后端语言为啥不能操控dom?,webassembly是被你们吃了吗?
go rust编译成wasm不能操控dom? ...

兄台,你说的没错,不过这帖子讨论的后端语言操作dom貌似指的是在服务端...wasm是浏览器这边的
作者: scarlee    时间: 2021-11-2 17:25
不管是mvc、mvp、mvvm,它只是一种模式,模式就是一种解决方式,在c语言或者纯函数式编程眼里,面向对象、设计模式都是狗屎,所以你不必非得照本宣科的,它们的合理性只存在于自身语言的困境。找到适合你所用的语言、团队、业务迭代上适合的模式就行了。
作者: kaleok    时间: 2021-11-2 17:27
我心碎不了 发表于 2021-11-2 17:14
后端语言为啥不能操控dom?,webassembly是被你们吃了吗?
go rust编译成wasm不能操控dom? ...

所以叫大前端的人不要参与讨论。你就跟凭什么linux不能运行exe?wine被你们吃了一样的道理。强行来解释一个讨论后端mvc架构的帖子找存在感有意义?
作者: sdqu    时间: 2021-11-2 17:29
这贴子居然也能变成吵架贴,我也是服了
作者: minlearnhbs    时间: 2021-11-2 17:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 17:30
scarlee 发表于 2021-11-2 17:25
不管是mvc、mvp、mvvm,它只是一种模式,模式就是一种解决方式,在c语言或者纯函数式编程眼里,面向对象、 ...


对,都是一种模式,但看清楚标题,讨论的是mvc的工作原理。也就是说在大家不清楚mvc实际执行原理的情况下来讨论与梳理。你这样不算照本宣科?一切都来自于二进制,0和1才是根本,讨论其他的有什么意义?
作者: kaleok    时间: 2021-11-2 17:34
sdqu 发表于 2021-11-2 17:29
这贴子居然也能变成吵架贴,我也是服了

凡是发布技术论坛的帖子,哪有不装B的?隔壁论坛,知乎更严重好吧。这才是技术发展缓慢的根本原因,为什么这么多技术博客关闭评论懂了吧?关闭博客评论的意思就是:你看就行了,不看就滚。别来叽叽喳喳的无脑喷。但互动性的地方,在所难免,因为技术都是大家查资料自己摸索掌握的,其中的艰苦只有自己知道。但一些人喜欢分享出来,更多的一些人就如这些喷子,总认为自己花时间摸索掌握的才是宝贝,并且对其他不了解的嗤之以鼻孔。这是国内开发行业的正常现象
作者: minlearnhbs    时间: 2021-11-2 17:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 17:38
minlearnhbs 发表于 2021-11-2 17:36
web0.0的时候,html的时候就是天然的后端语言操作dom。那时js,还没出来,只有html,人们只发布静态页面 ...

所以你一个大前端,来讨论什么后端呢?找什么存在感呢?是不是淘宝,12306,这些用了后端的在你们面前都是垃圾?别来自欺欺人了。虚心学习才是对得起自己的
作者: minlearnhbs    时间: 2021-11-2 17:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 17:40
minlearnhbs 发表于 2021-11-2 17:36
web0.0的时候,html的时候就是天然的后端语言操作dom。那时js,还没出来,只有html,人们只发布静态页面 ...

还web0.0,没有这样的时代划分好吧,js,vb存在的历史比你这小屁孩都大。没有ssr的时代大家不知道多百花齐放,到你这里就是ssr才是宇宙归一了。。无知实在可怕
作者: scarlee    时间: 2021-11-2 17:41
kaleok 发表于 2021-11-2 17:30
对,都是一种模式,但看清楚标题,讨论的是mvc的工作原理。也就是说在大家不清楚mvc实际执行原理的情况下 ...

你还在纠结设计模式的原理还在纠结细节,说明你就还没明白规范、模式这些东西的局限性、不同的语言实现相同的模式也都各不相同,哪怕同样的语言,不同的技术栈下也不同,我说了,它只是一种方式、不是真理。很多人陷入语言之争、模式之争,各自带领各自的邪教,征战话语权,这背离了编程世界平等开放又百花齐放的初衷。
作者: sdqu    时间: 2021-11-2 17:42
kaleok 发表于 2021-11-2 17:34
凡是发布技术论坛的帖子,哪有不装B的?隔壁论坛,知乎更严重好吧。这才是技术发展缓慢的根本原因,为什 ...

不得不承认,确实是这样的。
我做后台几十年,不过我现在一般不大和别人谈这些。你行你上,我水平次,可以了吧? 你开心就好。。 我喜欢用这两句。
就如同我十分钟前才回了一个贴,哇哦,你会dd,你牛逼! 其实我管理着的独服比他用过的小鸡还多。懒得说这些,你牛就好了,我就默默拉黑你结束,懒得说也看着烦。

作者: minlearnhbs    时间: 2021-11-2 17:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 17:47
minlearnhbs 发表于 2021-11-2 17:43
所以说你只会百度啊,没有自己的认知。所以必须要靠一篇篇发贴来说服自己
看问题不晓得看本质,只会尊崇 ...

原来是你,上一个喷我不会谷歌的人,有截图的大哥,看历史帖子,看回复帖子。我是会谷歌的人。只是,喷不下去就来鄙视百度搜索,你是多看不起百度呀,百度挺无辜的懂吗?比我更不懂的人还被百度收录了,你又算个什么呢?除了讽刺别人,你又给别人提供了多少有意义的内容资源呢?
你第一个帖子有人回复你了,你有脸看了吗?
强行在一个讨论后端的帖子讲前端多优秀,讲ssr多先进,你不决定你找错地方了么?
作者: minlearnhbs    时间: 2021-11-2 17:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: yc260982    时间: 2021-11-2 17:59
本帖最后由 yc260982 于 2021-11-2 18:01 编辑


作者: kaleok    时间: 2021-11-2 18:02
minlearnhbs 发表于 2021-11-2 17:50
什么是我?
这种人真可怕。

请看清楚重点,重点你已经把话题转移到质疑我只会百度,并且质疑百度的内容都是比我还不懂的人发的。你是有多优秀才会说出这种话出来的,首富怎么不是你呢?不合理啊
作者: minlearnhbs    时间: 2021-11-2 18:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 18:11
minlearnhbs 发表于 2021-11-2 18:06
还用质疑吗?

天天loc当记事本。也没见发布啥作品。发的总结也是初初级。还担心别人懂不懂DOM

是你来说dom的,我才来说PHP跟dom没有关系,然后你们就来说后端可以处理dom,问题就是比如人家讨论linux,你非要说exe,然后说linux跟exe没关系,然后抓住一点,wine被你吃了呀的口吻。。。。到头来第二个帖子就开始人身攻击说我受过伤能理解,最后说我只会百度,还是个工具人。。。
你们的逻辑思维能力和断章取义能力小弟实在佩服呀。也算是个人才
作者: minlearnhbs    时间: 2021-11-2 18:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 18:15
本帖最后由 kaleok 于 2021-11-2 18:17 编辑
minlearnhbs 发表于 2021-11-2 18:14
可是,好的歹的,也没能见你听进去一句啊?
你是典型的反MJJ,反自我,反renlei啊。

我可没有说你应该缺胳膊少腿,残疾人可以理解吧?
你来说我受过伤可以理解这样的话又是什么目的?
关键我不反谁,是你来反我在先

问题就是,php为什么要听你的dom,听你的SSR,毫不相干的东西,何必来强行凑热闹?
作者: minlearnhbs    时间: 2021-11-2 18:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 18:25
minlearnhbs 发表于 2021-11-2 18:22
不说了。你好好整整逻辑。先从我回答第一句什么是mvc原理说起。

嗯嗯,首先懂得尊重人先,提不同观点很正常,别来就人身攻击,我一开始就确认你是个残疾人看你气不气
作者: minlearnhbs    时间: 2021-11-2 18:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaleok    时间: 2021-11-2 18:28
minlearnhbs 发表于 2021-11-2 18:26
累了,8

请尊重事实,语言很多种,存在都有自己优势所在,不懂可以学,不必这样油盐不进




欢迎光临 全球主机交流论坛 (https://443502.xyz/) Powered by Discuz! X3.4