Для работы с файловой системой в UMI принято использовать классы umiFile, umiImageFile и umiDirectory. Они упрощают некоторые рутинные операции и предоставляют некоторые дополнительные возможности. Работа с ними достаточно прозрачная, поэтому мы рассмотрим только основные моменты.

Работа с отдельным файлом происходит примерно следующим образом.

<?php
 header("Content-type: text/html; charset=utf-8");
 include "standalone.php";
 
 /*
  Документация: работа с файловой системой. Аксессоры класса umiFile.
 */
 
 $file = new umiFile(__FILE__);
 echo $file->getFileName(), "<br />\n"; //Выводим название файла
 echo $file->getFilePath(), "<br />\n"; //Выводим путь к файлу
 echo date("Y-m-d H:i", $file->getModifyTime()); //Выводим время модификации файла
?>
fs_1.php
/usr/local/www/baleba/htdocs/doc_samples/fs_1.php
2008-09-08 19:07

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

<?php
 include "standalone.php";
 
 /*
  Документация: работа с файловой системой. Скачивание файла.
 */
 
 $file = new umiFile(__FILE__);
 $file->download(); //Передать в браузер текущий файл на скачивание
?>

Работа с директориями происходит тоже предельно просто. Ниже показано, как можно вывести содержание директории, используя итератор в umiDirectory.

<?php
 header("Content-type: text/html; charset=utf-8");
 include "standalone.php";
 
 /*
  Документация: работа с файловой системой. Работа с директориями: итераторы.
 */
 
 //Получаем объект для директории "images"
 $dir = new umiDirectory("images");
 
 //Используем его в цикле foreach (umiDirectory реализует итератор)
 foreach($dir as $item) {
  if($item instanceof umiFile) {
   echo $item->getFileName(), "<br />\n";
  }
  
  if($item instanceof umiDirectory) {
   echo "&lt;", $item->getName(), "&gt;<br />\n";
  }
 }
?>
<.svn>
<cms>
<icons>
banner468x60.png
bg_vote_wb.gif
top.jpg
bg_vote_wt.gif
logo.png
bg_vote_top.gif
.htaccess
bg_vote_bot.gif
arrow.png
<forum>
<tttttttt>