Структура папок PHP MVC / Модель-Папка-Структура

Модель не является классом или каким-либо отдельным объектом. Это очень распространенная ошибка […], потому что большинство фреймворков увековечивают это заблуждение.

Итак, какова лучшая структура папок для моделей?

Zend Рекомендуемая структура каталогов проекта, например, имеет только папку «модель». Но когда я пытаюсь разделить свои модели на Доменные объекты, картографы данных и сервисы, как должна выглядеть эта структура?

Спасибо!

-1

Решение

Я думаю, что это субъективно, но я дам вам мой способ сделать это. Я держу models каталог, а затем создать различные подкаталоги для каждого модуля приложения. Это будет выглядеть примерно так:

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

Я чувствую, что это дает хорошее разделение каждого модуля, сохраняя все внутри models каталог, к которому другие разработчики привыкли.

Я не знаю, является ли это лучшим или наиболее эффективным решением, но я думаю, что при правильном использовании пространств имен им легко управлять. Я также узнал, что если вы правильно используете SOLID principle Вы можете (почти) копировать / вставлять различные каталоги / модули в другие проекты без особых хлопот.

Небольшая серия, созданная TutsPlus, которая подробно объясняет принцип SOLID, используя теорию и конкретный пример.

Я надеюсь, что это может помочь вам в правильном направлении.
С наилучшими пожеланиями.

0

Другие решения

В 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');
-1

По вопросам рекламы [email protected]