Php 数据映射器、模型和图像

Php 数据映射器、模型和图像,php,image,data-modeling,datamapper,Php,Image,Data Modeling,Datamapper,我看到并阅读了大量的博客文章和论坛主题,讨论并给出了PHP中数据映射器/模型实现的示例,但我没有看到任何涉及到保存文件/图像的内容 我目前正在从事一个基于Zend Framework的项目,我正在模型中进行一些图像处理(正在传递一个文件路径),然后我将其留给映射程序将该文件保存到适当的位置-这是常见的做法吗 但是,你如何处理从传入的图像创建3个不同大小的图像?目前我有一个setImage($path\u to\u tmp\u name),它检查图像类型,调整大小,然后保存回原始文件名。调用get

我看到并阅读了大量的博客文章和论坛主题,讨论并给出了PHP中数据映射器/模型实现的示例,但我没有看到任何涉及到保存文件/图像的内容

我目前正在从事一个基于Zend Framework的项目,我正在模型中进行一些图像处理(正在传递一个文件路径),然后我将其留给映射程序将该文件保存到适当的位置-这是常见的做法吗

但是,你如何处理从传入的图像创建3个不同大小的图像?目前我有一个
setImage($path\u to\u tmp\u name)
,它检查图像类型,调整大小,然后保存回原始文件名。调用
getImagePath()
然后返回数据映射程序可以使用的当前文件路径,然后在将其保存到适当位置后,调用
setImagePath($path)
进行更改,例如“/content/my_images”。这听起来对你实用吗

另外,您将如何处理获取该图像的URL?你认为这是模型应该提供的东西吗?在我看来,该模型应该考虑图像存储在哪里,或者最终如何通过浏览器访问图像,因此我倾向于将其放在ini文件中,并通过控制器将URL前缀传递给视图。这听起来合理吗

我正在使用GD进行图像处理-这与此无关

更新:我一直在想,是否应该在模型中调整图像大小。该模型可能需要提供一个“主”图像和一个“拇指”图像,这两个图像都具有一定的尺寸。我曾考虑在模型中创建一个
getImageSpecs()
函数,该函数将返回定义所需大小的内容,然后一个单独的图像处理类可以执行调整大小和(可能在控制器中?)并使用类似
setImagePath($images)的内容将最终路径传递到模型中


非常感谢您的任何想法:)

我首先要告诉您,让映射器保存文件的路径是常见的做法,因为这正是服务层(您的映射器)应该做的。在您的情况下,最好是为生成的每个文件创建一个路径。我建议:

$path = '/path/to/root/' . substr(chunk_split(md5(<unique id for file>), 2, '/'), 0, 5);
$path='/path/to/root/'。substr(chunk_split(md5(),2,“/”),0,5);
通过执行上述操作,您的路径类似于:/path/to/root/ab/23/。由于每个图像需要不同的大小,现在可以使用id名称和大小来保存每个图像。例:

$fileName = <uniquie file id from above> . '_50_100' . $ext;
$fileName=。'_50_100' . $提取;

最后需要做的就是将路径保存到数据库中。然后,您的模型可以从服务层检索路径,并构建所需的URL

非常感谢您的回复。抱歉,如果我不知道,为什么不直接使用ID作为文件名呢?块吐只是为了帮助文件分类吗?