模型不是类或任何单个对象。制作[...]是一个非常常见的错误,因为大多数框架都会延续这种误解。
那么,模型的最佳文件夹结构是什么?
例如,Zend Recommended Project Directory Structure只有一个"型号"夹。但是当我尝试将我的模型分成Domain Objects, Data Mappers and Services时,这个结构应该怎么样?
谢谢!
答案 0 :(得分:0)
我认为这是主观的,但我会告诉你我这样做的方式。我保留models
目录,然后为应用程序的每个模块创建不同的子目录。它看起来像下面这样:
application
- controllers
- models
- authentication
- services
- mappers
- ...
- mail
- services
- mappers
- ...
... (other directories)
- views
- templates
我觉得这可以很好地分离每个模块,同时将所有内容保存在models
目录中,而其他开发人员已经习惯了。
我不知道这是否是最好或最有效的解决方案,但我认为通过正确使用命名空间,它证明非常容易管理。我还了解到,如果你正确使用SOLID principle
,你可以(几乎)将不同的目录/模块复制/粘贴到其他项目中而没有太多麻烦。
我希望这可以帮助你找到正确的方向。 最好的问候。
答案 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');