Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >大多数MVC-严格php框架

大多数MVC-严格php框架
EN

Software Engineering用户
提问于 2013-04-17 12:43:13
回答 5查看 4.1K关注 0票数 8

大约6个月来,我一直在尝试研究MVC模式,我阅读了大量关于MVC和HMVC模式的文章、问答和博客文章,但我只是不完全理解它。

我尝试通过使用广泛使用的PHP框架之一CodeIgniter来学习MVC。我用它为我的公司实现了很少的内部网站。尽管如此,我还是不能百分之百地理解。我认为最好的学习方法之一就是严格遵守规定的规则。

因此,我的问题是:在MVC模式如何实现方面,最严格的PHP框架是什么?它定义了我如何使用模型、控制器和视图,这样我就可以完全获得MVC是什么?

EN

回答 5

Software Engineering用户

回答已采纳

发布于 2013-04-17 14:09:08

短答案

没有这回事。

更长版本:

框架不实现MVC或MVC启发的设计模式。你的申请。

MVC并不是某种神奇的调料,您可以通过将它转储到框架中来添加到应用程序中。相反,您实际上需要学习和理解上述模式(以及相应的原则和实践,如实心LoDSoC)。只有这样,您才能尝试在您选择的框架内使用它。

如果一个框架宣称它“有MVC",那么它是完全没有意义的。在这种情况下,它被用来将框架“出售”给那些更关心最新的炒作而不是应用程序设计和编码实践的noobs。

框架的目标是为您提供工具集合,当作为整体使用时,将为您提供一个经过修改/改进的开发环境。它们处理诸如路由、自动加载、存储的低级抽象(不,我不是在讨论活动记录反模式)和其他让您在boh开发和维护方面节省时间的事情。

总结

.

PHP中没有MVC框架。所有对我这样说的人实际上都是最糟糕的。即-码点火器、cakephp和yii。不惜一切代价避免他们(除非你的薪水真的很高)。

如果需要使用框架,当前最好的选择是Symfony 2.x、ZendFramework2.x或Laravel4.x的最新版本。这些应用程序不会为您实现MVC,而是会对您自己的应用程序体系结构造成最小的伤害。

票数 13
EN

Software Engineering用户

发布于 2013-04-17 22:36:11

我只能和Cake交谈,而且在MVC方面我没有什么好说的。他们没有正确地执行MVC。Codeigniter在很大程度上是相同的。即使在使用了一段时间之后,您也没有“得到”MVC,这一点也不奇怪。

MVC仅仅是正确地分离应用程序逻辑的三个不同的组件:应用程序的核心、演示以及使两者在现实世界中工作所需的粘合剂。

你的应用程序的核心,包括所有的业务逻辑,数据库交互,服务,蜂鸣声和使你的应用程序成为你的应用程序的模式。模型不是一个特定的东西在一个特定的形状,它是任何必要的使你的应用程序的工作方式。你只有一个“模型”,那就是你的应用程序。

视图用于以某种方式输出模型所做的事情。这是用户界面。它是一切必要的显示有用的信息给用户。这可能是一个网站,它可能是一个命令行界面,它可能是一个本地桌面GUI。你可以在你的应用程序中使用这三者。

Controller只是用来使其工作的任何东西,主要是接收用户输入并将其引导到适当位置的东西。对于不同类型的上下文,您可能有几种不同类型的控制器,例如,一个可以处理传入HTTP请求的控制器、一个处理命令行输入的控制器和一个连接到GUI事件的控制器。

这些部件的具体形状完全取决于您的应用程序。这三者都可以算是他们自己的迷你应用程序。任何模板-预置框架“模型”都是为一种通用的情况而建立的,以帮助您快速地获取和运行一些东西;它通常不是您的模型应该采取的最佳形式。您将不得不为您的应用程序提出自己的结构,任何最适合它的构建。查看OOP原则、实体、依赖注入等,并根据这些准则构建您的核心模型。然后根据需要将视图和控制器围绕在它周围。

这种分离的目的只是为了使应用程序可维护和可扩展。模型不包含任何特定于任何特定形式的输入或输出的内容。例如,它不包含任何特定于格式的文本(比如HTML格式中的错误消息).它不采用任何特定形式的输入(如HTTP请求)。相反,视图不包含任何业务逻辑,它的任务只是输出。控制器也不包含任何业务逻辑,它的工作只是“输入”。原因很简单,控制器和视图都是可互换的,但您的应用程序不是。

如果您想为此使用一个框架,请使用一个模块化的框架,并允许您做任何您需要做的事情。Zend、Symfony、Laravel和类似的基于挑选的组件框架最适合这一点。

票数 7
EN

Software Engineering用户

发布于 2013-04-17 23:49:25

这种框架不可能存在,原因有几个。

首先,MVC模式中的模型是使应用程序成为应用程序的一部分。如果一个框架要严格定义模型的样子,那么该框架只能用于一个或最多几个应用程序。这实际上阻止了它成为一个框架。

第二个问题是,对于MVC模式的适当应用是什么样子,还没有一个普遍的共识。例如,有些人会说,Controller必须向View提供它从模型中需要的数据,而另一些人则会说,View应该自己检索它需要的信息,而Controller应该确保View知道在哪里找到模型。

另一个更特定于web应用程序的例子是View可以完成的处理量。对于一些人来说,视图应该完全由HTML文件组成,其中一些地方持有者可以用实际的内容替换(通常由Controller从模型中检索),而另一些人则非常习惯于让View进行与UI相关的处理,比如将所呈现的内容国际化。

票数 7
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/195297

复制
相关文章
ZooKeeper日志配置
ZooKeeper 使用 SLF4J 作为日志的抽象层,默认使用 Log4J 来做实际的日志工作。使用两层日志抽象看起来似乎是多余的。这里简要的说明如何来配置 Log4J,虽然 Log4J 非常灵活且功能强大,但是也有一些复杂,这里只是简要的介绍一下基本的用法。
smartsi
2019/11/26
4.6K0
Deployment滚动更新策略RollingUpdate
当需要升级Deployment中的Pod镜像或者配置时,可以使用滚动更新策略,避免出现服务中断或者数据丢失。滚动更新策略可以让新的Pod在替代旧的Pod之前先完成启动,这样就能保证服务的持续可用性。Kubernetes中Deployment对象提供了两种滚动更新策略:RollingUpdate和Recreate。
玖叁叁
2023/04/29
1.2K0
Deployment滚动更新策略Recreate
Recreate策略是另一种滚动更新策略,它会先删除旧的Pod,然后再创建新的Pod。在进行滚动更新时,所有的Pod都会被同时停止,然后全部替换为新的Pod。Recreate策略的优点是可以避免新旧Pod的共存问题,但会在升级期间中断服务。
玖叁叁
2023/04/29
5260
Log4J.xml配置详解
问题:当引用第三方jar的时候,第三方jar打印了很多不需要的日志。我们应该如何去除。
斯文的程序
2019/11/07
15.8K1
【程序源代码】Log4J 日志分割
“ 关键字:通过log4j实现日志文件按照日期和文件大小进行自动分割保存,实现日志备份和日志文件合理管理。”
程序源代码
2020/04/26
1.4K0
使用log4j配置不同文件输出不同内容
敲代码中很不注意写日志,虽然明白很重要。今天碰到记录日志,需要根据内容分别输出到不同的文件。 参考几篇文章: 感觉最详细:http://blog.csdn.net/azheng270/article/details/2173430/ 喜欢博客园的日志风格,第一篇参考文章就是它:http://www.cnblogs.com/alipayhutu/archive/2012/06/21/2558249.html 写好的模板,直接修改就可以,虽然不满足我的需求:http://blog.csdn.net/rsun1/
Ryan-Miao
2018/03/13
3K0
使用log4j配置不同文件输出不同内容
springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置
日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度;
noteless
2018/09/11
8680
RollingFileAppender选项及相应配置
Layout用来规定日志是以什么样的格式输出,需要输出哪些信息。Layout提供四种日志输出样式,如根据HTML样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式。 常见的Layout如下:
用户7718188
2021/10/08
1.8K0
log4j介绍以及使用教程
  Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接 口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。    Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。
阿豪聊干货
2018/08/09
5770
Log4j 学习笔记(四)log4j的配置文件
此节分享xml形式的log4j.properties。 1. 将日志输出到控制台 log4j.xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYP
青山师
2023/05/04
6370
log4j配置文件模版
   log4j.properties {.brush:xml;toolbar: .true; .auto-links: .false;} log4j.rootLogger=DEBUG, INFO, ERROR # 输出控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold=INFO log4j.appender.CONSOLE.Target=System.out log4j.a
明哥的运维笔记
2019/01/30
2.7K0
Log4j 入门教程
Log4J 是 Apache 的一个开源项目,通过在项目中使用 Log4J,我们可以控制日志信息输出到控制台、文件、GUI 组件、甚至是数据库中。我们可以控制每一条日志的输出格式,通过定义日志的输出级别,可以更灵活的控制日志的输出过程。方便项目的调试。
Remember_Ray
2020/08/03
5250
kafka log4j日志级别修改,一天生成一个日志文件
这有什么问题呢,虽然说我们用一天一次的滚动日志,但是我们配置的DataPattern为小时级别的,所以只要每个小时有日志生成,那么每个小时都会生成日志,简单来说就是一个小时一个。
从大数据到人工智能
2022/01/19
8380
log4j.xml示例_log4j.xml示例配置
We can configure log4j using both property file as well as xml file. Today we will look into log4j.xml example and get the details of log4j.xml configuration.
用户7886150
2020/11/18
1.2K0
Java日志框架学习--上
每一种日志框架都有自己单独的API,要使用对应的框架就要使用对应的API,这就大大的增加了应用程序代码对于日志框架的耦合性。
大忽悠爱学习
2022/05/15
4770
Java日志框架学习--上
Java日志框架学习--JUL和Log4j--上
每一种日志框架都有自己单独的API,要使用对应的框架就要使用对应的API,这就大大的增加了应用程序代码对于日志框架的耦合性。
大忽悠爱学习
2022/11/30
6870
Java日志框架学习--JUL和Log4j--上
Log4j.properties配置文件详解「建议收藏」
Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。
全栈程序员站长
2022/11/11
16.9K0
spark stream配置log输出
在cluster模式下,spark-submit添加如下参数。两个--conf分别为driver和executor设置log4j的配置文件,--files将文件上传到集群
平凡的学生族
2020/06/23
1.9K0
log4j2配置文件properties配置_log4j2 配置详解
Log4j支持两种配置文件格式,一种是XML格式的文件,一种是properties(key=value)文件,其中properties格式的配置文件最为常用,其有一个固定的文件名log4j.properties,下面我们介绍使用properties文件做为配置文件的方法:
全栈程序员站长
2022/11/11
4.2K0
细说log4j
可能做过java项目的基本上都是用过log4j,它是用来做java日志的。比如我们做一个项目分为很多的模块,那我们怎么想要知道它什么时候启动了,这时候我们可以使用log4j标记某某模块启动了。 努力的人绝对不会成为落后的标兵,加油!废话不多说,进入log4j。 一、log4j简介 1.1、log4j概述   log for java(java日志)   Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器
用户1195962
2018/01/18
1.7K0
细说log4j

相似问题

RollingFileAppender - log4j,MaxBackUpIndex未生效

126

在DailyRollingFileAppender -log4j中使用MaxBackupIndex

10

Log4j和Logback FileAppender maxFileSize和maxBackupIndex

12

Log4j在使用RollingFileAppender、maxsize、maxbackupindex和close时发出

10

默认log4j策略

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文