【发布时间】:2012-03-21 07:32:57
【问题描述】:
应该通过控制器直接访问服务器或网络共享还是创建某种模型?
我可以在控制器中使用这样的代码:
$path = '/var/www/uploads';
$fileArray = array();
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot()) {
$fileArray[] = array('filename' => $fileinfo->getFilename(), 'extension' => $fileinfo->getExtension(), 'size' => $this->bytesToSize($fileinfo->getSize(),2), 'modified' => date('d/m/Y H:i', $fileinfo->getMTime()));
}
}
$this->view->fileList = $fileArray;
这意味着每次都重复,这似乎是在 MVC 中做事的错误方式。我应该创建一个映射文件系统的模型,还是 Zend 有可以做到这一点的东西?
例如//伪代码
$directory = new Zend_Directory();
$this->view->filelist = $directory->listFiles();
$directory->addFile('filepath');
$directory->deleteFile('filepath');
具有类似的功能,上传、删除、重命名、移动、复制等。
有什么想法吗?
【问题讨论】:
-
如果您只是要像示例中那样将此数组传递给视图,请创建一个视图助手。如果您只想检索相同的数组并在您的控制器中使用,请创建一个操作助手。如果您需要更多功能,那么您已经在这里展示了,请制作一个模型。
-
我一直在寻找的主要功能之一是将文件保存到特定文件结构的能力。例如当给出发票时,它应该保存在路径为 /basepath/customer/invoice/file 的文件夹中。这个路径必须即时创建,我希望在某个地方创建一个可以转换文档类型的函数,即将发票和客户 ID 放入路径中,然后保存文件。
标签: php zend-framework filesystems