Плоская иерархия структуры модели MVC - PullRequest
1 голос
/ 08 декабря 2010

У меня проблема с возможной иерархией моделей в MVC-паттерне.

Рассмотрим следующую ситуацию:

База данных состоит из трех таблиц. Галерея Альбом Изображение

В галерее 0 .. * альбомов В альбоме 0 .. * images

Я также получил одну модель для каждой таблицы, следовательно, три модели. Вопрос в том; Должен ли я получить с плоской структурой или глубокой структурой.

Если я хочу переименовать изображение, мы получаем следующее для фрагментов кода.

Глубокая структура, в которой учитывается иерархия между моделями.

public function RenameImage($intAlbumId, $intImageId, $strNewName)
{
    $objGallery = new Gallery();
    $objGallery ->LoadByInput($intPackageId);
    $objAlbum   = $objGallery->GetAlbum($intAlbumId);
    $objImage   = $objAlbum->GetImage($intImageId);

    $objImage   ->SetName($strNewName);
    $objImage   ->Save();
}

Или плоская структура:

public function RenameImage($intImageId, $strNewName)
{
    $objImage   = new Image();
    $objImage   ->LoadById($intImageId);
    $objImage   ->SetName($strNewName);
    $objImage   ->Save();
}

Глубокая структура создаст больше кода, но также больше зависимостей и лучшую безопасность, если вы не сможете получить доступ к модели, не пройдя через родительскую модель.

Плоская структура создаст меньше кода, но также будет лишена безопасности.

Как бы вы это сделали?

...