适用于高级PHP开发人员的MVC [关闭]


68

我需要经验丰富的程序员的帮助。我想提高我的MVC技能。但是我在Google for MVC上找不到很好的教程。Google始终会为“初学者提供MVC”。

我了解MVC是什么,我可以做到,但是我没有足够的经验来做OOP实用的东西。

如果有人知道MVC的优秀面向对象教程,请引导我到正确的地方-我正在寻找好的链接,书籍等。


7
@ Dr.House,实际上CI是PHP中两个最差的框架之一。除了蛋糕。它没有实现MVC或任何其他受MVC启发的设计模式。它依赖于全局状态,包含PHP4工件,违反了所有SOLID原理,并且完全忽略了SoC。
tereško

7
如果您想了解MVC,CI是最糟糕的选择之一。阅读该用户的最佳答案要好得多。
PeeHaa

4
Fabien Potencier – Symfony不是MVC框架。框架不实现MVC。您的代码可以。
–tereško,

9
@tereško,确实是网络游击队员!我以建设性的态度说:我注意到您的陈述经常过于粗略(上文以及您对redreggae的评论),并且可能会采用不太可能引起冒犯的方法。对于每个成功的开源项目,都应该有人投入我的心和灵魂,我也应该想到汗水和眼泪!无论您是否相信Symfony 1都能满足当今的开发成熟水平,它都是一个很好的框架,周围有繁忙的生态系统。简短版:以积极的态度批评他人,但不要着迷于人们的工作。
2013年

8
同样,删除投票。是的,这个问题似乎是没有建设性的。但是,不能-不应删除它。保持关闭状态就足够了。那是因为:它包含非常有用的答案。
Alma Do

Answers:


250

包含仅PHP材料的链接带有标记,php以便于识别。

在全面了解OOP之前,您甚至无法开始研究MVC。其中包括OOP实践依赖注入单元测试重构原则SOLIDSoCCQSLoD和通用模式(不,单例不是面向对象的模式)。

MVC是一种高级架构设计模式,需要扎实的理解。它并不适合初学者或小型“ hello world”应用程序。当简单地遵循OOP惯例变得太松散而无法控制代码库时,可以使用MVC向代码库添加其他约束。

我可以为您建议的最好方法是,首先扩大您对面向对象代码的了解:

上面的两个讲座应涵盖基础知识。然后继续:

当您理解了本系列中所有解释的内容后,您可以扩展:

另外,我强烈建议您阅读(按此顺序):

PS:您也可以看看这本书(谨慎地,因为它有问题):PHP设计模式指南 php


像Google Talk一样,是因为在测试环境中。感谢您的清单。
whereismydipp

@tereško,这是我从未读过的最佳链接集之一,非常感谢您的链接。是否有可能提供有关php中单元测试的实际原因的解释。我只是想知道通过使用phpUnit或Jenkins等工具在框架中进行单元测试的重要性。我们可以忽略这个吗?。我问这个问题是因为在编写代码时,我常常会感到自己正在编写代码,以确保可以轻松地使用php unit来测试其功能。因此,在使用phpunit时需要花费更多的开发工作。
aravind.udayashankara

1
首先,Jenkins是一个持续集成工具。不同的主题。至于单元测试-不,您不需要使用它。您可以花更多的时间编写可以测试的代码。如果您编写好的OOP代码(没有全局状态,则在必要时进行依赖注入),那么测试它的能力将只是副作用。而且,如果您要编写测试,则将需要更多时间。本讲座可能会解释有什么好处以及如何编写这些测试。
tereško

4
问题是,当您在不进行测试的情况下进行开发时,工作流程将如下所示:您编写了一些代码,然后将其上传,然后以不同的形式填写了一些数据,或者单击以查看它是否有效..然后重复执行。每次填写数据都需要时间。单元测试可让您预先定义输入和预期输出的列表,这样您就不必在第100场填写50场保险单,而只是测试第32场的验证是否正确即可。每次发现错误时,您只需添加一个测试数据即可复制该错误以及实际应该输出的数据。
tereško

5
单元测试要做的另一件事是-阻止您(或一些热心的同事)以“优化”的名义删除错误修正,仅仅是因为有人不知道或不记得“为什么IF语句中存在这个奇怪的第三个条件? ”。如果删除破坏代码的内容,则单元测试可能会选择它。
tereško

1

我向您推荐的是一本有关设计模式的书。这些书中的大多数还涵盖了MVC模式,如果您构建了一个完整的框架,其他模式也是值得了解的。

一本不错的书是《PHP设计模式》。我不知道英语是否存在,但我会搜索其他书籍并比较内容。


1
Kapitel 4,Erzeugungsmuster,behandelt Entwurfsmuster,eingesetzt werden和um Objekte zu erzeugen。在Diesem Kapitel das“ Singleton-Pattern”,das“ Factory-Method-Pattern”,“ Abstract-Factory-Pattern”和das“ Prototype-Pattern”中的Vorgestellt werden。..在最后一章中介绍了PEAR。这似乎没有什么希望。
tereško

@tereško那又如何?您认为这本书很烂,因为它涵盖了单例模式?
bitWorking

7
很难说(注意我既没有说过它“烂透了”也没有低下头)。我只是说,应该仔细阅读它。特别是如果要计算“ php书籍”中的废话总数。
tereško
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.