Как обрабатывать файлы в ООП?

Мне нужно копировать, перемещать и удалять файлы.

Существуют ли какие-либо компоненты или классы для этого?

Я нашел это, но он только перемещается: http://api.symfony.com/master/Symfony/Component/HttpFoundation/File/File.html

Или, может быть, я должен придерживаться нативных функций?


person ChocoDeveloper    schedule 26.08.2012    source источник


Ответы (3)



PHP имеет множество функций для работы с файловой системой.

  • Функция copy() делает то, что следует из ее названия — копирует файлы
  • Функция rename() фактически переименовывает и/или перемещает файлы. Это поведение знакомо пользователям Linux как команда mv.
  • Для удаления файлов используется unlink().

В документация PHP есть целый раздел функций, посвященных манипулированию файловой системой.


Объектно-ориентированный подход вступит в силу, когда и как вы реализуете эти функции в своем коде.

person Lix    schedule 26.08.2012
comment
@ши - согласен. Заглавные буквы должны быть размещены там, где это необходимо: P Спасибо за редактирование;) - person Lix; 27.08.2012
comment
Конечно, но это не ООП, и я не уверен, что должен использовать его в проекте Symfony2. Например: вы можете выполнять команды с помощью exec(), но потом вы понимаете, что есть лучший способ сделать это в Symfony. - person ChocoDeveloper; 27.08.2012
comment
Вот как любой PHP-код (в конце концов) будет манипулировать файлами. Обертки и то, как вы их используете, делают его объектно-ориентированным. Тебе решать! :) - person Lix; 27.08.2012
comment
Слушайте, я не хочу спорить, но если уже есть обертка для улучшения всего этого (например, выбрасывать исключения вместо предупреждений/фатальных ошибок), я хотел бы знать. Я знаю, что это всего лишь еще один уровень абстракции. - person ChocoDeveloper; 27.08.2012

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

class File {

    public static function exists($file) {
        return file_exists($file);
    }

    public static function copy($file, $destination) {
        // checks
        return copy($file, $destination);
        // error handling
    }

    public static function move($file, $destination) {
        return rename($file, $destination);
    }

    public static function delete($file) {
        return unlink($file);
    }
}

File::copy( 'test.txt', 'copy.txt' );
person Poe    schedule 26.08.2012