模块与控制器

Dan*_*ugg 5 php model-view-controller routes module

我正在为一个(哦不,另一个)PHP 框架编写一些零散的内容,作为一种学习经验,并希望将来可以在较小的项目中使用。

我已经阅读了相当多的内容,即现有框架的参考文档。我经常看到“模块”这个词,根据我的阅读和以前的经验,模块是一个用于划分相关代码(视图、控制器、模型等)的概念。

我很好奇,SO 在这种情况下如何看待模块?(上下文是 MVC Web 应用程序架构,或类似的应用程序开发模式)

我正在尝试确定如何最好地应用它,因为(我相信)它适合我当前的困境。对于音乐网站,模块将被视为ArtistProducer等,而控制器将是ProfileMedia等。这当然会留下动作,例如View、 或Edit

这一切看起来都不错,因为现在我可以像这样进行路由:

'Artist/Profile/View/{ALIAS}'
    +- Module : Artist
    +- Controller : Profile
    +- Action : View

//this may be accessed via music.com/artist/{alias}
//defaulting the Controller and Action
Run Code Online (Sandbox Code Playgroud)

..但我试图弄清楚模块概念如何适合这里,特别是我将如何组织或修改我的控制器以适应。


这就是我正在考虑的文件系统布局;

+- Root
    +- 'index.php'
    +- 'api.php'
    +- Modules
    |   +- Public
    |   |   +- Controllers
    |   |   +- Views
    |   |
    |   +- User
    |   |   +- Controllers
    |   |   +- Views
    |   |
    |   +- Artist
    |   |   +- Controllers
    |   |   +- Views
    |   |
    |   +- Producer
    |   |   +- Controllers
    |   |   +- Views
    |   |
    |   +- Venue
    |   |   +- Controllers
    |   |   +- Views
    |   |
    |   +- Administrator
    |       +- Controllers
    |       +- Views
    |
    +- Models
    +- Config
    +- ...
Run Code Online (Sandbox Code Playgroud)

Joh*_*hnP 2

模块(在 CakePHP 中称为插件)在大多数框架中几乎都是迷你应用程序。它们内部有自己的 MVC 结构,并且通常是自包含的,可能只依赖于主要应用程序模型来保持代码可重用。

我们在工作中使用 Zend,模块的示例是

  1. 管理模块供站点管理员对系统进行更改。
  2. 用于网站通用前端的Web模块
  3. 用户模块,适用于拥有附加管理工具来在网站上执行活动的登录用户

基本上所有这些都属于同一站点/系统,但处理方式大多不重叠。