PHP MVC最佳实践/成功的"规则"

Mar*_*lde 13 php model-view-controller

我确定有人已经发布了这个问题; 但是,我想在PHP上获得MVC的所有建议.我知道有很多专家愿意与那些对编码最佳实践有疑问的人分享他们的知识.

  • 你应该如何组织你的控制器?
  • 你应该如何组织你的模型?
  • Controller应该调用一个模型方法,模型调用子方法还是控制器调用所有模型子方法?
  • 等等

希望这可以帮助那里的人(因为它肯定会帮助我).

Geo*_*pty 39

MVC是最容易被误解的设计模式.根据定义,有一个模型.

当城市规划师提出一个项目时,他为它设计了一个模型.模型可能包含的独立实体:建筑物,街道,公园,通常不由单独的模型表示:它们是单个模型的所有方面.

所以在MVC中,模型可以由不同的实体组成,这可能是它的最佳词:实体,就像在数据库表所代表的实体中一样.MVC中的模型甚至可能比代码中实际表示的更抽象,而是应用程序可能需要对其执行的所有数据的概念保护.

考虑到这一点,如果这些机构都有自己的方法,这可能对应于CRUD(创建,读取,更新,删除),他们应该的方面特别是方法直接暴露给控制器,它是一个抽象的过低的水平.这些构建块应该构建为粗粒度的接口,例如,您可以删除记录,但在删除后返回记录列表.控制器只需要访问执行上述所有操作的粗粒度方法.

此外,要将实体的方法直接暴露给控制器,如果有关于使用什么ORM(对象关系映射)系统的更改,则可能导致控制器必须与实体类一起被重写. .我建议的中间层也是异常处理,日志记录和任何其他需要管理的管理员的好地方.

在更高抽象级别上建议的方法层有时被称为业务委托,或称为"外观",但这是我实际上认为的模型.希望这不是太理论化,对OP或其他读者有帮助.

  • 优秀答案+1这实际上有很多帮助.人们使用MVC框架而不考虑这些重要信息.如果您还有其他要添加的内容请做,因为我希望您能听到更多信息. (2认同)