脚本语言MVC应用程序的最佳文件系统结构

Xeo*_*oss 5 php filesystems model-view-controller

当我谈到脚本语言时,我说的是Python,Perl和(在我的例子中)PHP这样的语言.在使用CodeIgniter,Zend和许多其他有趣的MVC系统后,似乎很清楚,一个人似乎同意的一件事是文件夹结构(沿着与事物有关的东西).这对我来说真的是一个问题,因为我找不到任何关于不同结构设计的好处的好文档.大多数人只推荐一个,因为这是他们使用的,而不考虑设计的改进.

我希望我们都同意的一件事是在自动加载类时检查文件系统中的现有文件是非常糟糕的做法.我们的类不应该位于5个可能的位置之一,导致对我们加载的每个库进行一系列file_exists()检查.

所以无论如何,我正在尝试收集我可以比较的目录结构,以便在规划应用程序时找到最佳实践:

  1. 是否基于OOP最有可能意味着MVC
  2. 是国际范围和支持语言文件/翻译
  3. 对模块/插件是开放的,以便可以将完整的包放入我们的代码库中
  4. 清楚地定义发生了什么以及在哪里寻找给定的类
  5. 可能支持多个站点运行相同的结构(请参阅下面的/ site目录)

所以这就是我到目前为止所拥有的.请记住,libs只是一个术语,意味着您的主库/类目录,甚至可能包含模型,具体取决于文件夹结构.此外,我排除了任何类型的静态内容(JS/CSS /图像),因为这些内容实际上是经过深思熟虑而与我们的服务器代码无关 - 它甚至可能在另一台服务器上!缓存,文件上传,lang和所有其他生成的内容也是如此.

/controllers
/views
/models
/libs
/config
index.php
Run Code Online (Sandbox Code Playgroud)

这让我想起了Zend框架,它将所有内容都集成到一个libs文件夹中(其中还包含子文件夹以保持组织有序).仅适用于单个站点.


/libs
/site
    /controllers
    /views
    /models
    /config
index.php
Run Code Online (Sandbox Code Playgroud)

这将是上述结构的多站点版本.


/libs
/functions
/site
    /controllers
    /models
    /views
    /config
/site2
    /controllers
    /models
    /views
    /config
/modules
    /user
        /controllers
        /models
        /views
index.php
Run Code Online (Sandbox Code Playgroud)

这将是允许多个站点插入模块的版本.这些模块将是自包含的MVC应用程序,如论坛,其中包括业务逻辑,CRUD和视图.

那么,是否有人有一个完美的结构,他们可以分享或指导我选择一个良好的可扩展设计?

Xeo*_*oss 6

这是一个过于复杂的例子,可以很好地组织一切 - 以清晰和简单为代价.

alt text http://www.gsdesign.ro/blog/wp-content/uploads/2008/12/zend-framework-modular-dire.png