PHP MVC 文件夹结构/模型-文件夹-结构
PHP MVC folder structure / Model-Folder-Structure
The model is not a class or any single object. It is a very common mistake to make [...], because most frameworks perpetuate this misconception.
那么,模型的最佳文件夹结构是什么?
Zend Recommended Project Directory Structure, for example, has only a "model" folder. But when I try to separate my models into Domain Objects, Data Mappers and Services,这个结构应该是怎样的?
谢谢!
在 Zend Framework 中您可以创建 "modules" 可以集成自己的模型。
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');
我认为这是主观的,但我会告诉你我的做法。我保留 models
目录,然后为应用程序的每个模块创建不同的子目录。它看起来像下面这样:
application
- controllers
- models
- authentication
- services
- mappers
- ...
- mail
- services
- mappers
- ...
... (other directories)
- views
- templates
我觉得这很好地分离了每个模块,同时将所有内容都保存在其他开发人员习惯使用的 models
目录中。
我不知道这是否是最佳或最有效的解决方案,但我认为通过正确使用命名空间,它证明非常易于管理。我还了解到,如果您正确使用 SOLID principle
,您可以(几乎)copy/paste 将不同的 directories/modules 用于其他项目而无需太多麻烦。
希望这可以帮助您找到正确的方向。
最好的问候。
The model is not a class or any single object. It is a very common mistake to make [...], because most frameworks perpetuate this misconception.
那么,模型的最佳文件夹结构是什么?
Zend Recommended Project Directory Structure, for example, has only a "model" folder. But when I try to separate my models into Domain Objects, Data Mappers and Services,这个结构应该是怎样的?
谢谢!
在 Zend Framework 中您可以创建 "modules" 可以集成自己的模型。
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');
我认为这是主观的,但我会告诉你我的做法。我保留 models
目录,然后为应用程序的每个模块创建不同的子目录。它看起来像下面这样:
application
- controllers
- models
- authentication
- services
- mappers
- ...
- mail
- services
- mappers
- ...
... (other directories)
- views
- templates
我觉得这很好地分离了每个模块,同时将所有内容都保存在其他开发人员习惯使用的 models
目录中。
我不知道这是否是最佳或最有效的解决方案,但我认为通过正确使用命名空间,它证明非常易于管理。我还了解到,如果您正确使用 SOLID principle
,您可以(几乎)copy/paste 将不同的 directories/modules 用于其他项目而无需太多麻烦。
希望这可以帮助您找到正确的方向。 最好的问候。