2010-06-26 78 views
1

我正在考虑重新工作我的MVC之前,我得到了很远的一起。目前它使用一个用户输入并确定模型的sinle控制器。该模型具有maby不同的方法,我称之为动作,因为它会自动调用。该模型加载其视图文件,该文件再次包含许多不同的方法。该模型可以设置可以在视图中使用的属性。然后控制器调用分析输出显示的模板类。我能做些什么来改善我的MVC?

这是bst的方式吗?

或者应该每个不同的部分(新闻,联系,约)都有自己的控制器,它加载了一个特定的模型和视图。本质上,它不是将方法分组到单个文件中,而是使用multipe文件。

我有点失落,我该怎么做。

干杯

+0

您可能想看看HMVC(分层MVC)并开始实施。 http://www.javaworld.com/javaworld/jw-07-2000/jw-0721-hmvc_p.html http://www.thecentric.com/wiki/index.php/HMVC_Tutorial – Andreas 2010-06-26 11:36:56

回答

2

开始使用MVC的作品,并是著名像Symfony的或蛋糕。由此你会决定:

  • 你自己做什么,知道最佳实践;
  • 如果您觉得自己可以通过使用这些方法节省时间,就可以放弃自己的生活。
+0

好的建议。我花了一点看蛋糕,但不多。我会试着用它做点什么,看看它是如何工作的。我想编写自己的代码,我已经阅读了许多文章,说它很好地代码yiur自己,主要是作为一种学习体验。 – 2010-06-26 11:33:18

+0

在正常的项目中,MVC框架低于所有代码的5%,建立和适应项目规范的MVC总是更好。大型开源MVC项目具有普遍性,速度缓慢。但要了解MVC如何工作并获得一些好的体验,尝试一些着名的MVC FW是很好的。 – codez 2010-06-26 11:40:09

+0

我同意,我读过的大部分内容都表示,大型MVC项目试图将其全部纳入其中。我打算让我的MVC成为最低限度的,所以,如你所说,我可以将它用于项目。适应每个项目。 – 2010-06-26 14:09:26

0

构建FrontController,它解析请求uri并决定要加载哪个控制器以及要运行哪种方法。随着的.htaccess重写所有的请求到index.php

//index.php 
class FrontController{ 
    function run(){ 
    //parse request uri here /comment/new 
    //load controller comment 
    //run controllers method new and pass some request attributes 
    } 
} 

// ../controllers/comment.php 
class Controller_Comment extends Controller{ 
    function new($request){ 
    //do stuff here 
    } 
} 
1

模型加载其视图文件

控制器应充当模型和视图之间的调停。

模型不应该意识到视图呈现的方式,视图也不应该知道模型的任何种类的逻辑。理论上,如果您的MVC结构良好,您应该能够使用不同类型的视图(例如HTML,XML和JSON)来表示相同的模型。

2

如果您正在考虑推进您自己的MVC模型,就像@ e-satis所说的那样,您将需要体验已经开发的系统中正在发生的事情。但是,根据我在设计MVC模型和确定开源社区中有什么的经验,我坚持回到自己的MVC有两个很好的理由。一个原因是定制的灵活性,另一个原因是自己的MVC隐私。

我对MVC设计模式使用了以下方法。

标识用户请求URL的Router.php文件。此路由器将能够获取控制器并包含该文件并调用控制器默认方法。

如果需要,加载的控制器也可以加载其他控制器。这是使用全局方法完成的,其中所有控制器类将扩展到可以调用其他控制器的MainController类。

我确实使用全局注册表来设置变量,并从一个控制器获取变量。

模型用于从表中获取数据,并且我的大多数模型将表示包含CRUD(创建读取更新删除)的数据库函数。以便控制器可以使用模型轻松操作数据库表数据。

如果您希望系统能够更智能地识别知道文件名所需的操作,则所有控制器,模型和视图中的命名约定也很重要。

我对每种控制器分别使用视图。这些视图将被发送到主模板视图文件。 与模型相同,控制器将能够将视图设置为主视图。

还有其他的自定义,你可以做,比如在调用类之前或调用类/控制器/模型/视图等之后应用安全方法。 这是由MainController完成的,它将始终查看具有自动加载类的文件夹,指定在构建内容和交付输出的过程中,在执行不同操作之前和之后应加载哪些文件。

MVC不是一个小规模的想法,但它是一个始终可以开发的设计理念。有很多PHP MVC开源框架可以找到,如果你知道如何搜索像google.com的主要搜索引擎

但我建议你,如果你只是开发一个小的MVC不是一个好的解决方案动态网站,因为与开发小型网站相比,它将耗费更多时间进行开发。 MVC是理想的,如果你有业务逻辑并且需要系统自动化以避免大多数例程开发任务,并且我会说MVC对大型应用程序来说是最理想的。

+0

谢谢,这真是很好的建议。在过去的几天里,我一直在为我的MVC重新编码,说实话,它的构建很像你的系统是如何构建的。至少,听起来是这样。我理解使用MVC的概念,因为我已经有很多计划。我从来没有真正理解我应该如何去做,因为大多数教程对我来说似乎有点模糊。 – 2010-06-29 14:39:41

相关问题