应该通过控制器直接访问服务器或网络共享,还是创建某种模型?
我可以在控制器中使用这样的代码:
$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有可以做到这一点的domething?
例如//伪代码
$directory = new Zend_Directory();
$this->view->filelist = $directory->listFiles();
$directory->addFile('filepath');
$directory->deleteFile('filepath');
具有类似的功能,上传、删除、重命名、移动、复制等。
有什么想法吗?
使其成为一个模型。通过这种方式,您可以进行单元测试,轻松地交换新的控制器,并在其他项目中重用该模型。
一个好的经验法则是:如果它直接与数据(数据库、服务、文件等)交互,那么就将其作为模型。
实际上,有一个关于Zend_Directory
和Zend_File
(链接)的提案,但自2009年以来,似乎没有进行任何工作。
您可能需要考虑将代码打包为其他人可以使用的插件。也许可以用我上面发布的链接作为起点。