Php 我能做些什么来提高我的MVC?

Php 我能做些什么来提高我的MVC?,php,model-view-controller,Php,Model View Controller,我正在考虑在我开始做MVC之前重新做它。目前,它使用一个sinle控制器,接受用户输入并确定模型。这个模型有很多不同的方法,我称之为actions,因为其中一个是自动调用的。模型加载其视图文件,该文件再次保存许多不同的方法。模型可以设置可在视图中使用的属性。然后,控制器调用模板类,该模板类解析输出以进行显示 这是bst的方法吗 或者每个不同的部分(新闻、联系人、关于)都应该有自己的控制器,用于加载特定的模型和视图。本质上,它不是将方法分组到单个文件中,而是使用多个文件 我不知道该怎么做 干杯开始

我正在考虑在我开始做MVC之前重新做它。目前,它使用一个sinle控制器,接受用户输入并确定模型。这个模型有很多不同的方法,我称之为actions,因为其中一个是自动调用的。模型加载其视图文件,该文件再次保存许多不同的方法。模型可以设置可在视图中使用的属性。然后,控制器调用模板类,该模板类解析输出以进行显示

这是bst的方法吗

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

我不知道该怎么做


干杯

开始使用一个像Symfony或Cake一样有效且知名的MVC。据此,您将决定:

  • 了解最佳实践后,你自己应该做些什么
  • 如果你觉得用这些论文可以节省时间,那就放弃你自己的

开始使用一个像Symfony或Cake一样有效且知名的MVC。据此,您将决定:

  • 了解最佳实践后,你自己应该做些什么
  • 如果你觉得用这些论文可以节省时间,那就放弃你自己的

构建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
  }
}

构建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
  }
}
模型将加载其视图文件

控制器应该充当模型和视图之间的中介

模型不应该知道视图呈现它的方式,视图也不应该知道模型的任何逻辑

理论上,如果您的MVC结构良好,那么您应该能够用不同类型的视图(例如HTML、XML、JSON)表示相同的模型

模型将加载其视图文件

控制器应该充当模型和视图之间的中介

模型不应该知道视图呈现它的方式,视图也不应该知道模型的任何逻辑


理论上,如果您的MVC结构良好,那么您应该能够用不同类型的视图(例如HTML、XML、JSON)表示相同的模型

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

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

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

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

我确实使用全局注册表来设置和获取从一个控制器到另一个控制器的变量

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

如果您想让系统更智能地识别已知文件名的所需操作,那么所有控制器、模型和视图中的命名约定也很重要

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

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

MVC不是一个小规模的想法,但它是一个可以随时开发的设计思想。如果你知道如何搜索像google.com这样的主要搜索引擎,那么可以找到很多PHP MVC开源框架


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

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

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

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

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

我确实使用全局注册表来设置和获取变量