我需要更多有经验的程序员的帮助。我想提高我的MVC技能。但是我在Google for MVC上找不到很好的教程。 Google始终会为“初学者提供MVC”。
我知道MVC是什么,我可以做到,但是我没有足够的经验来做OOP实用的东西。
如果有人知道MVC的优秀面向对象教程,请引导我到正确的地方—我正在寻找好的链接,书籍等。
#1 楼
包含仅PHP材料的链接用php标记,以便于识别。
在全面了解OOP之前,您甚至无法开始研究MVC。其中包括OOP实践(依赖注入,单元测试,重构)原理(SOLID,SoC,CQS,LoD)和通用模式(不,单例不是面向对象的模式)。
MVC是先进的建筑设计模式,需要扎实的理解。它并不适合初学者或小型“ hello world”应用程序。当对OOP的简单遵循变得太松散而无法控制代码库时,可以使用MVC在代码库中添加其他约束。面向的代码:
清洁代码I:参数
清洁代码III:函数
以上两个讲座应涵盖基础知识。然后继续进行以下操作:
继承,多态性和测试
单元测试
全局状态和单例
不要找东西!
当您理解了本系列中所有解释的内容后,您可以扩展以下内容:
别傻了,掌握SOLID! php
敏捷设计的原理
高级OO模式(幻灯片)php
超越框架(幻灯片)php
敏捷性和质量php
超越设计模式php
此外,我强烈建议您阅读(按此顺序):
设计模式的解释
GUI体系结构
控制容器的反转和依赖注入模式
模式应用程序体系结构指南
域驱动设计:解决软件核心问题的复杂性
PS:您还可以阅读这本书(谨慎地看,因为它存在问题):PHP设计模式指南php
评论
像Google Talk一样,是因为在测试环境中。感谢您的清单。
– whereismydipp
2013年9月12日在7:28
@tereško,这是我从未读过的最佳链接集之一,非常感谢您的链接。是否有可能提供有关php中单元测试的实际原因的解释。我只是想了解使用phpUnit或Jenkins等工具在框架中进行单元测试的重要性。我们可以忽略这个吗? 。我问这个问题是因为在编写代码时,我常常会感到自己正在编写代码,以确保可以轻松地使用php unit来测试其功能。因此,在使用phpunit时需要花费更多的开发工作。
–aravind.udayashankara
13年9月30日在5:55
首先,Jenkins是一个持续集成工具。不同的主题。至于单元测试-不,您不需要使用它。您可以花更多的时间编写可以测试的代码。如果您编写好的OOP代码(没有全局状态,则在必要时进行依赖注入),那么测试它的能力将只是副作用。而且,如果您要编写测试,则将需要更多时间。本讲座可能会解释有什么好处以及如何编写这些测试。
–tereško
2013年9月30日在6:27
问题是,当您在不进行测试的情况下进行开发时,工作流程将如下所示:您编写一些代码,然后将其上传,然后以不同的形式填写一些数据,或者单击周围的内容以查看其是否有效..然后重复进行。每次填写数据都需要时间。单元测试可让您预先定义输入和预期输出的列表,这样您就不必在第100场填写50场保险单,而只是测试第32场的验证是否正确即可。每次发现错误时,您只需添加一个测试数据即可复制该错误以及实际应该输出的数据。
–tereško
2013年9月30日在6:27
单元测试要做的另一件事是-阻止您(或一些热心的同事)以“优化”的名义删除错误修正,只是因为有人不知道或不记得“为什么IF语句中存在这种奇怪的第三种情况? ”。如果删除破坏代码的内容,则单元测试可能会选择它。
–tereško
13年9月30日在6:28
#2 楼
我向您推荐的是一本有关设计模式的书。这些书中的大多数都还涵盖了MVC模式,如果构建一个完整的框架,其他模式也是值得了解的。一本好书是《 PHP Design Patterns》。
我不知道它以英语存在,但我会搜索其他书籍并比较内容。
评论
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
13年5月3日在10:46
@tereško那又如何?您认为这本书很烂,因为它涵盖了单例模式?
–bitWorking
13年5月3日在10:49
很难说(注意我既没有说过它“烂透了”也没有低下头)。我只是说,应该仔细阅读它。特别是如果要计算“ php书籍”中的废话总数。
–tereško
13年5月3日,10:55
评论
@ Dr.House,实际上CI是PHP中两个最差的框架之一。除了蛋糕。它没有实现MVC或任何其他受MVC启发的设计模式。它依靠全局状态,包含PHP4工件,违反了所有SOLID原理,并且完全忽略了SoC。如果您想了解MVC,CI是最糟糕的选择之一。您最好阅读该用户的最佳答案。
Fabien Potencier – Symfony不是MVC框架。框架不实现MVC。您的代码可以。
@tereško,确实是网络游击队员!我以建设性的态度说:我注意到您的陈述经常过于粗略(上面以及您对redreggae的评论),并且可能以不太可能引起冒犯的方法来做。对于每个成功的开源项目,都应该有人投入我的心和灵魂,我也应该想到汗水和眼泪!无论您是否相信Symfony 1都能满足当今开发成熟度的要求,Symfony 1都是一个很好的框架,周围有繁忙的生态系统。简短的版本:以积极的方式批判,但不要落在人们的工作上。
同样,删除投票。是的,这个问题似乎没有建设性。但是,不-不应删除它。保持关闭状态就足够了。那是因为:它包含非常有用的答案。