Использование Zend Framework в случае доступа к файловой системе через контроллер или модель - PullRequest
0 голосов
/ 21 марта 2012

Должен ли сервер или сетевые ресурсы быть доступны через контроллер напрямую или создана какая-то модель?

Я могу использовать такой код в контроллере:

$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 есть купола, которая может сделать это?

например. // КОД PSEUDO

$directory = new Zend_Directory();
$this->view->filelist = $directory->listFiles();
$directory->addFile('filepath');
$directory->deleteFile('filepath');

С аналогичными функциями: загрузка, удаление, переименование, перемещение, копирование и т. Д.

Есть идеи?

1 Ответ

0 голосов
/ 21 марта 2012

Сделай это моделью. Таким образом, вы можете выполнять модульные тесты, легко заменять новые контроллеры и повторно использовать модель в других проектах.

Хорошее практическое правило: если оно напрямую взаимодействует с данными (база данных, служба, файл и т. Д.), Сделайте их моделью.

И на самом деле есть предложение для Zend_Directory и Zend_File ( ссылка ), но, похоже, с 2009 года над ним не ведется никакой работы.

Возможно, вы захотите рассмотреть упаковку своего кода в качестве плагина, который могут использовать другие. Возможно, используйте отправную ссылку, которую я разместил выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...