基于CakePHP的模块化目录结构

基于CakePHP的模块化目录结构,php,cakephp,model-view-controller,web-applications,enterprise,Php,Cakephp,Model View Controller,Web Applications,Enterprise,CakePHP太棒了,它真的配得上“快速开发框架”的口号。我已经能够快速烘焙控制器、模型和模板。在我撞到砖墙之前,一切都很好。我正在开发的应用程序对于默认提供的简单目录结构来说太庞大了 在开发过程的中途,我开始看到自己在表类中留下了很多业务逻辑。我听说过用行为代码污染模型类不是一个好主意 由于我的应用程序很大,它需要几个模块——几乎是微型应用程序——我需要稍微不同地使用CakePHP。我会解释我喜欢的应用程序的结构 应用程序结构(体系结构) 核心 此文件夹将包含我的应用程序的所有模块。或者,它

CakePHP太棒了,它真的配得上“快速开发框架”的口号。我已经能够快速烘焙控制器、模型和模板。在我撞到砖墙之前,一切都很好。我正在开发的应用程序对于默认提供的简单目录结构来说太庞大了

在开发过程的中途,我开始看到自己在表类中留下了很多业务逻辑。我听说过用行为代码污染模型类不是一个好主意

由于我的应用程序很大,它需要几个模块——几乎是微型应用程序——我需要稍微不同地使用CakePHP。我会解释我喜欢的应用程序的结构

应用程序结构(体系结构)

核心 此文件夹将包含我的应用程序的所有模块。或者,它应该被称为“模块”,而不是“核心”

模块 每个模块文件夹都有一个用于控制器、模型、服务和模板的文件夹

模型 这将包含两个子文件夹,即CakePHP 3已经提供的子文件夹。它将包含实体和表的文件夹。我听说该表充当存储库,所以我忽略了使用存储库文件夹的想法

服务 服务文件夹将包含模块的服务,主要是使用表实体进行数据持久化和检索的业务逻辑代码。这有助于保持以业务逻辑为中心,并保持模型类和控制器精简

控制器 控制器将是与服务类对话的人。使用服务检索数据、保存数据、进行验证、处理业务逻辑……等等。我的目标也是通过将大部分逻辑内容转移到服务中,使控制器的工作变得非常轻松

模板 这将包含控制器用于将数据渲染回web浏览器的视图文件。我可能在那里有子文件夹,用于查看模块的子部分

注释和问题 如果我没有正确解释我自己,请原谅,我们正在处理一个非常复杂的应用程序,它有许多表,大约100个。如果有人对用CakePHP3组织大型应用程序有更好的建议,我将不胜感激


通过以这种方式开发我的应用程序,我知道CakePHP不会开箱即用,我可能需要重新配置它,以便它可以使用我的自定义目录结构。要做到这一点有多容易?

如果您使用的是这些
MVC
s,那么您应该遵循这些约定。您已经重新实现并将它们称为模块。最好使用提供的功能,除非它们有缺陷(我怀疑你所描述的情况是否如此。通常将应用程序实现为多个插件)。我看不出文件夹/命名空间结构与代码的放置位置有什么关系,您可能想反思一下这一点。@AD7six当您在freenode#cakephp的irc上时,我刚刚查看了cakebot日志,您在频道上已经有一段时间了。如果你突然出现,我可能想解释一下我的问题。我不再频繁使用irc了——其他可以帮助我的人——使用插件。如果你使用的是这些
MVC
s,那么你应该遵循这些惯例。你已经重新实现并称它们为模块。最好使用提供的功能,除非它们有缺陷(我怀疑你所描述的情况是否如此。通常将应用程序实现为多个插件)。我看不出文件夹/命名空间结构与代码的放置位置有什么关系,您可能想反思一下这一点。@AD7six当您在freenode#cakephp的irc上时,我刚刚查看了cakebot日志,您在频道上已经有一段时间了。如果你突然出现,我可能想解释一下我的问题。我不再频繁使用irc了——其他可以帮助我的人认为我已经有了使用插件。