使用模块化文件夹结构?

时间:2012-04-01 12:49:05

标签: php model-view-controller

我正在使用MVC模块化结构,有点像你可以使用Zend(我不使用Zend)。目录结构如下:

/www
  /Config
  /Modules
    /default
      /controllers
        indexController.php
        loginController.php
      /models
      /views
    blog
      /controllers
        indexController.php
      /models
      /views
...

我对这个结构有一些疑问。我的“默认”文件夹中有一个loginController。显然,用户会访问该页面进行登录。

登录后的用户可以在博客上发布内容。但这就是我的问题所在。不同模块如何共享数据,如用户数据?

在这种情况下,“默认”模块也将具有“userModel”。但该博客还显示了“最新用户”列表。所以它需要以某种方式访问​​“默认”模块中的userModel。

我可以想到更多的例子,某个模块需要来自另一个模块的数据。

但这意味着'模块'在某种程度上几乎总是依赖于另一个模块。所以这就是为什么我在这个结构中看不到任何用处。或者我在这里做错了什么.. ??

2 个答案:

答案 0 :(得分:1)

我实际上会重新考虑你在模块中的确切内容。

Model层的结构应该在不同的模块之间共享(同样......你的命名约定很糟糕:模块,模型,模型,模块,模块模型......令人困惑)。这些模块用于打包与交互相关的部分。

当您使用表示“文章”的域业务对象时,逻辑不会在模块之间神奇地改变。相反,每个用户可以使用它做什么只是限制。取决于,是否授权用户执行某些命令。

您可能会因阅读此SO topic而受益..虽然更专注于控制器级别的授权,但相同的想法可以应用于域对象。

另外,你应该仔细阅读M. Fowler关于GUI Architectures的文章。

答案 1 :(得分:0)

似乎'模块'方法是不适合的方法。在MVC中,您只有三个实体:模型视图和控制器。

控制器可以加载任何模型,例如你提到的:post_controller需要 post user 模型,所以就这样吧。因为模型代表数据,所以让两个用户模型做同样的事情是不正确的。

所以我会摆脱模块方法,因为它是一种反模式,你注意到在开始重复所有应用程序的类和/或代码时。

相关问题