該模型不是一個類或任何單個對象。這是一個非常常見的錯誤,因爲大多數框架會使這種誤解持續存在。PHP MVC文件夾結構/模型文件夾結構
那麼,什麼是模型的最佳文件夾結構?
例如,Zend Recommended Project Directory Structure只有一個「模型」文件夾。但是當我嘗試將我的模型分成Domain Objects, Data Mappers and Services時,這個結構應該如何?
謝謝!
該模型不是一個類或任何單個對象。這是一個非常常見的錯誤,因爲大多數框架會使這種誤解持續存在。PHP MVC文件夾結構/模型文件夾結構
那麼,什麼是模型的最佳文件夾結構?
例如,Zend Recommended Project Directory Structure只有一個「模型」文件夾。但是當我嘗試將我的模型分成Domain Objects, Data Mappers and Services時,這個結構應該如何?
謝謝!
我認爲這是主觀的,但我會給你我做這件事的方式。我保留models
目錄,然後爲應用程序的每個模塊創建不同的子目錄。它看起來像下面這樣:
application
- controllers
- models
- authentication
- services
- mappers
- ...
- mail
- services
- mappers
- ...
... (other directories)
- views
- templates
我覺得這給了每個模塊的一個很好的分離,同時保持其其他開發人員正確地使用到models
目錄中的一切。
我不知道這是否是最好或最有效的解決方案,但我認爲正確使用名稱空間證明它很容易管理。我還了解到,如果您正確使用SOLID principle
,您幾乎可以將不同的目錄/模塊複製/粘貼到其他項目中,而無需太多的ha。。
我希望這可以幫助你正確的方向。 此致敬禮。
在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
正如你所看到的,每個模塊也有控制器和視圖關聯。
最後,你必須將這些模型添加到您的引導程序的自動加載磁帶機:
// 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');