PHP:MVC迷思

渗透测试工程师技能进阶:从基础到高级认证的完整学习路线 渗透测试作为网络安全领域的核心实践,其本质是在授权范围内模拟黑客攻击,以发现系统潜在安全风险。其技术原理基于对网络协议、系统架构和应用程序逻辑的深入理解,通过主动安全评估来验证防御体系的有效性。这项技术的核心价值在于将攻击者思维转化为可度量的安全改进,帮助企业提前发现并修复漏洞,从而降低数据泄露、业务中断等实际风险。在应用场景上,渗透测试广泛应用于金融、政务、互联网及各类企业的Web应用、移动APP、内网及云环境的安全评估。本文聚焦于渗透测试工程师的角色定位与技能进阶,系统拆解了从网络基础、Web安全、内网 阅读详情

 

近来设计模式风行,MVC随处可见,PHP领域也不例外,很多论坛都开始讨论在PHP中使用MVC。然而,M、V、C在PHP中到底该如何实现?MVC真的适合PHP么?这里Easy给出一些自己的思考。

MVC的原型

MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

JAVA中的MVC

JAVA把MVC引入了Web领域,并在此基础上架构出了一套称为Model2的体系。由于Web的特殊性,JAVA中的MVC和Desktop中的MVC并不完全一致。主要原因是Web中的V不是持续的,用户每访问一次,V就要重新生成一次,所以V始终是和M一致的,不需要C来控制同步。那么JAVA中的C在干什么?JAVA中的C通常用于流程的转向,其实用的是Dispatch模式,不再是Desktop中的C了。

 

PHP中的MVC  

要在PHP中原封不动的COPY JAVA的MVC是不可能的。问题主要表现在M上,在JAVA中,M是独立于业务逻辑和表现逻辑的数据模型,在服务器端跨页面存在,JAVA Bean扮演的就是这个脚色。而PHP进程并不长时间驻留于内存,只在PHP页面开始执行时创建,在页面解释执行结束时就已经结束。在这样的情况下,我们根本无法直接实现M。所以所有声称实现了MVC模式的PHP程式都只能通过模拟手段来实现M。实现的方式一般是在当前页面结束前把数据存入数据库或者cookie/session,在下一个页面中再透过数据库或者cookie/session重建M。这样的方式和JAVA中的Bean比起来可以说是开销巨大,本来往内存中写数据的简单操作现在要从服务器端传到客户端或者数据库,然后再传回来。与其用这么大的开销来维护一个数据模型再在最后把这个模型塞回数据库,还不如直接根据需要更新数据库里边的数据。

现在PHP中的MVC架构可以用图一来表示。

然后我们再来看V。现在很多PHP程序简单的使用了一些模板技术就在说明中写“采用MVC架构”。其实绝大多数的PHP模板程序都只是分离HTML和PHP的,而非MVC强调的显示逻辑和业务逻辑分离。一个混用HTML和PHP的页面一样可以是MVC的一部份。如何分离显示逻辑和业务逻辑至今没有一个满意的方案。我个人则比较认同http://www.phpe.net/articles/384.shtml的实现方案。至于C,和JAVA中差不多,还是被用作转向,这个在PHP中其实并不重要。

一个极耗资源的M + 一个区别不大的V + 可有可无的C 构成了PHP中所谓的MVC。

基于以上分析,Easy认为,PHP原有的3层构架比所谓的MVC更为高效,而3层构架中的表现层要解决的问题MVC中的V也同样存在。一个改进后的3层架构比MVC更适用于PHP。

PS:有的方案把业务逻辑并入M中(http://www.phpe.net/articles/382.shtml),这其实是MVC的思想背道而驰的。

版权声明:Easy原创,转贴请保留署名、保持一致、注明出处。

ZLMediaKit源码分析(二)推流创建 ZLMediaKit推流结构体创建是在RtspSession::onRecv()之后。如何触发onRecv()请参考上一篇文章这里不在赘述。 阅读详情

相关推荐

桌面云虚拟机Ubuntu离线安装open-vm-tools

公司办公在桌面云中进行开发,桌面云是无法访问外网的,然后又有安装虚拟机的需求,使用VMware自带的VMware-tools安装功能失败,报错也需要联网才能解决,如果不安装VMware-tools,则虚拟机无法使用共享文件夹功能以及与本机共享剪贴板功能,非常难受,故自己研究解决如何离线安装open-vm-tools(open-vm-tools 是 VMware Tools 的开源实施)打开Ubuntu,可以在文件中看到生成的ISO文件,点开,将四个软件包复制粘贴至桌面。

weixin_43397593的博客 5075

用PHP开始你的MVC(三)实现你的Model层

三、实现你的Mode层Model层,就是MVC模式中的数据处理层,用来进行数据和商业逻辑的装封,进行他的设计的时候设计到三个个概念:------Model类。是实体类。用来保存数据库表格的中一条记录的所有字段的数据。并且可以验证这条记录数据的完整性。------ModelManager类。 是实体类的管理类。通常每一个实体类(Model)都要有一个对应的管理类(ModelManager)。管理类可

锻炼肌肉,防止挨揍 7705

3D视觉-结构光测量-线结构光测量

线结构光测量中,由激光器射出的激光光束透过柱面透镜扩束,再经过准直,产生一束片状光。这片光束像刀刃一样横切在待测物体表面,因此线结构光法又被成为光切法。线结构光测量常采用二维面阵CCD作为接受器件,因此只要通过增加垂直于面阵探测器的第三维度方向,就可以实现对三维物体的测量。

qq_20660115的博客 3127

PHP:MVC迷思

PHP:MVC迷思作者:EasyChen 来源:超越PHP 近来设计模式风行,MVC随处可见,PHP领域也不例外,很多论坛都开始讨论在PHP中使用MVC。然而,M、V、C在PHP中到底该如何实现?MVC真的适合PHP么?这里Easy给出一些自己的思考。MVC的原型MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。

程序人生 1221

动态数据脱敏技术分析

在当前国内信息安全热潮中,数据脱敏作为数据安全的重要一环得到了业界的认可与重视。早在2012年,数据脱敏首次作为一个单独的魔力象限由Gartner发布,Gartner在2014年又提出了:按照数据使用场景,将数据脱敏分为静态数据脱敏(Static data masking-SDM )与动态数据脱敏(Dynamic data masking-DDM )。 可能有人望文生义,认为动态数据脱敏一定比静态数据脱敏高级。非也非也,静态or动态,取决于脱敏的使用场景,主要是以使用场景为由来选择合适的数据脱敏的模式。 本

美创科技的博客 4673

避坑指南:ZYNQ平台上AXI 1G/2.5G Ethernet Subsystem实现IEEE1588的5个关键点

本文详细解析了在ZYNQ平台上使用AXI 1G/2.5G以太网子系统实现IEEE1588精密时间协议(PTP)的5个关键避坑点。从硬件选型、Vivado工程配置到Linux驱动适配,提供了实战经验与优化技巧,帮助工程师在工业自动化、电力系统等场景中实现纳秒级时间同步。

weixin_30687051的博客 234

编程语言PHP:MVC迷思

编程语言PHP:MVC迷思 近来设计模式风行,MVC随处可见,PHP领域也不例外,很多论坛都开始讨论在PHP中使用MVC。然而,M、V、C在PHP中到底该如何实现?MVC真的适合PHP么?这里Easy给出一些自己的思考。   MVC的原型   MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V

145

VECTOR硬件VN1600系列对比:VN1610、VN1611、VN1630A、VN1640A、VN1630log、VN1670

VN16系列说不清道不明的区别和关系

AmorRun的博客 2万+

php与mvc

· 在PHP中应用MVC的介绍(二) 阅读 348 次 · php.MVC系列教程之控制器 阅读 273 次 · php.MVC系统教程之配置文件 阅读 267 次

blueilove2003的专栏 694

nRF5340双核实战:从Zephyr环境搭建到蓝牙协议栈部署

本文详细介绍了nRF5340双核处理器的开发实践,包括Zephyr环境搭建、蓝牙协议栈部署及双核协同工作配置。通过实战案例展示了如何利用nRF5340的双核异构架构提升蓝牙应用性能,并提供了调试技巧与资源优化建议,帮助开发者高效实现低功耗蓝牙设备开发。

weixin_42525385的博客 380

基于灰度区域生长算法的红外目标检测算法matlab仿真

基于灰度区域生长算法的红外目标检测算法是一种常用的红外目标检测技术。它通过对红外图像进行灰度区域生长,找到具有相似灰度值的像素区域来检测目标。在本文中,我们将详细介绍基于灰度区域生长算法的红外目标检测算法的原理、步骤和应用。一、原理灰度区域生长算法是一种基于像素相似性的区域分割算法。它通过对图像中具有相似灰度值的像素进行聚类,将它们组合成更大的区域。灰度区域生长算法通常包括以下步骤:1.初始化:选择一个种子点作为起始点,将其作为第一个区域的中心点。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 251

ASP.NET MVC入门,好文共享

ASP.NET MVC入门,好文共享 http://www.dotblogs.com.tw/mis2000lab/archive/2009/08/20/10160.aspx 有时候,太过理论的东西,常常越看越胡涂。 但前两天我自己动手做过一些范例以后,再回头来看这些理论。 就觉得事半功倍了。 ...

weixin_30588827的博客 104

【2025年美团春招(算法岗)-3月15日-第三题(300分)- 字符串权值】(题目+思路+Java&C++&Python解析+在线测试)

小美定义一个字符串的权值为:其长度为3的回文子序列数量。例如,“abca"的权值为2,因为包含两个回文子序列"aba"和"aca现在给定一个仅包含小写字母的字符串,小美希望你输出该字符串每个前缀的权值。

m0_73659489的博客 312

网络安全实战自学指南:零基础入门到漏洞挖掘与SRC实战

网络安全的核心在于理解系统如何被攻破,这始于对基础Web漏洞原理的掌握。从概念层面,SQL注入、XSS等常见漏洞本质是应用程序对用户输入处理不当,导致非预期代码执行或数据泄露。其技术价值在于,掌握这些原理是构建主动防御能力和进行安全测试的基石。在应用场景上,无论是企业安全防护还是安全研究,手工漏洞挖掘与利用都是验证系统脆弱性的关键实践。本文聚焦于通过靶场实战与SRC平台,系统化地引导学习者从零构建漏洞挖掘技能,特别强调绕过学历门槛,通过**白帽子**实战与**Burp Suite**等工具的精通,将技术能力

weixin_33862993的博客 389

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

wordpress内核揭秘之day4_到底数据库操作是怎么实现的

刚才发了一博客 里面有一段是这么写的 /** * Read records from database by specified fields and values * When 1st parameter is an array, it's expected to be an associative array of field => value pairs to read dat

大话程序员 1247

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[phpmore]十一给MORE写稿件,有创意礼品送。快来参加吧

 September 20th, 2006 为了促进国内PHPer的交流、提倡原创,PHPmore.com和phpe.net联合发起 06国庆PHP原创文章大赛。活动细则1 活动对象:爱好PHP,喜欢交流。稿件要求必须是原创,使用中文书写,简繁不限。2 活动时间:9月20日至10月31日3 活动方式:在自己Blog上写好文章,并发布到 http://post.phpmore.com

.: Easy Style - 将PHP进行到底 :. 3980

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

PHP:路在何方?

PHP4:奇迹背后  1995年时,Rasmus在用PHP写他的个人主页;今天,PHP成为风靡全球的脚本语言,越来越多的站点选择使用PHP,连Yahoo都放弃了自己的脚本而改用PHP支持它的网站。可以说,PHP是一个奇迹。我一直认为,任何奇迹背后都有它的原因。现在,就让我们透过这个奇迹,来看看PHP的成功之道。 1 简单易用PHP的入门门槛很低,它对使用者的要求微乎

.: Easy Style - 将PHP进行到底 :. 3882

不一样的项目,不一样的PHP

在首页看到一篇文章 PHP做Web项目的优缺点document.title="PHP做Web项目的优缺点 - "+document.title  , 自己也来废话几句。其实PHP是一个很优秀的工具,它可以简单,也可以复杂。不一样的项目,应该用不一样的PHP。小项目 - 简单而直接的PHP一般对于一个功能页面在20以下的网站,我们可以用一个很简单的框架结构来写。在这个规模上,我建议是使用比较

.: Easy Style - 将PHP进行到底 :. 3702

PHP是一种没有前途的嵌入式脚本语言?

PHP是一种没有前途的嵌入式脚本语言?今天在优快云查资料时看见一篇奇文,题目叫做《PHP是一种没有前途的嵌入式脚本语言》。理由如下:PHP缺乏规模支持。缺乏多层结构支持。PHP极其没有道理地实现了一个混乱的不能统一的数据库接口支持。看见这篇文章我感到十分的遗憾,这种无责任语言比较又现身了。从该文章给出的理由看,这位作者对PHP的了解很大程度

.: Easy Style - 将PHP进行到底 :. 3586

最简单的留言板

1.1 留言板的原理 先让我们来看看现实生活中留言板是如何工作的,想象这样一种情况: 你说好在家等你的女友,可是临时有事情要出门,于是你决定写一个留言,以免回来时被修理。 让我们仔细分析一下事情的经过: 1 构思留言,想一个巧妙的理由 2 写下留言 3 将留言贴到门上,这样你的女友才能看到 其实在网络中,留言板也是同样工作的: 1 在页面上写好留言 2 将留言保存下来 3 在适当的时候适当的地方向

.: Easy Style - 将PHP进行到底 :. 3071

PHPer:让我们拥抱敏捷吧

PHPer:让我们拥抱敏捷吧 EasyChen(phpe.net) 2004.07 PHP时代,远没有结束   关于PHP未来的忧虑由来已久,一边是掌控着操作系统的微软的.net平台,一边是红透半边天的Java技术:PHP似乎已经走到了尽头。不过,当我们回首过去,就会发现,PHP其实从来都是在别人视为穷途末路的空间里发展。ASP、JSP、CGI的时代,PHP的处境不比今天好过,压力也不比今天小,而

.: Easy Style - 将PHP进行到底 :. 2963

用PHP5写客户端脚本

今天在sitepoint上看见HF的一个很有意思的帖子,PHP5可以作为客户端脚本使用,这是可是真的:P 方法是这样的: 首先下载并解压php5,然后在命令行中进入php5所在的目录,注册一个dll, regsvr32 php5activescript.dll  然后就可以在htm中使用activephp5了,写一个文件,比如 $window->alert("Hello Activephp5"

.: Easy Style - 将PHP进行到底 :. 2660
上一篇: Blog,流行有理由
下一篇: PHP 面向对象程序设计资源
KBUG
博客等级 码龄24年 5粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值