У меня проблема с возможной иерархией моделей в 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();
}
Глубокая структура создаст больше кода, но также больше зависимостей и лучшую безопасность, если вы не сможете получить доступ к модели, не пройдя через родительскую модель.
Плоская структура создаст меньше кода, но также будет лишена безопасности.
Как бы вы это сделали?