Я видел и читал множество постов в блогах и на форумах, в которых рассказывалось и приводилось примеры реализаций Data Mapper / Model в PHP, но я не видел ни одного, который бы также касался сохранения файлов / изображений.
В настоящее время я работаю над проектом на основе Zend Framework и выполняю некоторые манипуляции с изображениями в модели (которым передается путь к файлу), а затем я оставляю это мапперу для сохранения этого файла в подходящее место - это обычная практика?
Но тогда, как вы справляетесь с созданием, скажем, трех изображений разных размеров из переданного? На данный момент у меня есть setImage($path_to_tmp_name)
, который проверяет тип изображения, изменяет размеры и затем сохраняет исходное имя файла. Вызов getImagePath()
затем возвращает текущий путь к файлу, который может использовать преобразователь данных, а затем переключается с помощью вызова на setImagePath($path)
, после того как он сохранен в соответствующем месте, например, "/ content / my_images". Вам это кажется практичным?
Кроме того, как бы вы справились с получением URL для этого изображения? Считаете ли вы это тем, что должна обеспечивать модель? Мне кажется, что эта модель должна беспокоиться о том, где хранятся изображения или, в конечном счете, о том, как к ним осуществляется доступ через браузер, и поэтому я склонен поместить это в INI-файл и просто передать префикс URL-адреса представлению через контроллер. Это звучит разумно?
Я использую GD для манипулирования изображениями - не то чтобы это имело какое-либо значение.
ОБНОВЛЕНИЕ: Мне было интересно, нужно ли вообще изменять размер изображения в модели. Модель может потребовать, чтобы она предоставляла «основное» изображение и изображение «большого пальца», оба определенного размера. Я думал о создании функции getImageSpecs()
в модели, которая бы возвращала что-то, определяющее требуемые размеры, затем отдельный класс манипуляции с изображениями мог бы выполнять изменение размера и (возможно, в контроллере?) И просто передавать окончательные пути в к модели, используя что-то вроде setImagePaths($images)
.
Любые мысли высоко ценится:)