PHP MVC文件夹结构/ Model-Folder-Structure

时间:2015-01-09 08:44:15

标签: php model-view-controller model structure directory-structure

  

模型不是类或任何单个对象。制作[...]是一个非常常见的错误,因为大多数框架都会延续这种误解。

那么,模型的最佳文件夹结构是什么?

例如,Zend Recommended Project Directory Structure只有一个"型号"夹。但是当我尝试将我的模型分成Domain Objects, Data Mappers and Services时,这个结构应该怎么样?

谢谢!

2 个答案:

答案 0 :(得分:0)

我认为这是主观的,但我会告诉你我这样做的方式。我保留models目录,然后为应用程序的每个模块创建不同的子目录。它看起来像下面这样:

application
  - controllers
  - models
     - authentication
         - services
         - mappers
         - ...
     - mail
         - services
         - mappers
         - ...
     ... (other directories)
  - views
  - templates

我觉得这可以很好地分离每个模块,同时将所有内容保存在models目录中,而其他开发人员已经习惯了。

我不知道这是否是最好或最有效的解决方案,但我认为通过正确使用命名空间,它证明非常容易管理。我还了解到,如果你正确使用SOLID principle,你可以(几乎)将不同的目录/模块复制/粘贴到其他项目中而没有太多麻烦。

A little series created by TutsPlus, which explains the SOLID principle in detail by using theory and a concrete example.

我希望这可以帮助你找到正确的方向。 最好的问候。

答案 1 :(得分:-1)

在Zend Framework中,您可以创建"模块"它可以整合自己的模型。

application/
    configs/
        application.ini
    controllers/
        helpers/
    forms/
    layouts/
        filters/
        helpers/
        scripts/
    models/
    modules/
         Domain Objects/
           controllers/
           models/
         Data Mappers/
           controllers/
           models/
         Services/
           controllers/
           models/
    services/
    views/
        filters/
        helpers/
        scripts/
    Bootstrap.php

如您所见,每个模块还有相关的控制器和视图。

最后,您必须将这些模型添加到bootstrap的自动加载器中:

// Admin
    $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
        'basePath' => APPLICATION_PATH . '/modules/Domain Objects',
        'namespace' => 'Domain Objects'
    ));

    $resourceLoader->addResourceType('controller', 'controllers/', 'Controller')->addResourceType('model', 'models/', 'Model');