SplFileObject — как проверить и перезаписать файл?

Нужно реализовать весьма тривиальную задачу:

1. Открыть файл на чтение/запись
2. Проверить его дату изменения
3. В случае необходимости получить данные из внешнего источника и переписать ими текущие данные в файле.

$file = new \SplFileObject(/*адрес файла*/, 'w+');

if ($file->getMTime() /*... -  проверяем условие*/) {
      // выполняем чтение данных и перезапись файла
}
       
return;


Вот на чтении и перезаписи я застопорился. Нужно прочитать данные полностью с заданного урла - то что делает file_get_contents, но только в объектно-ориентированном стиле и с использованием имеющегося объекта. И главное - не переписать только начало файла (если полученные данные окажутся короче, чем имеющиеся). Смотрю на список методов SplFIleObject и никак не могу понять, как это сделать.
  • Вопрос задан
  • 295 просмотров
Пригласить эксперта
Ответы на вопрос 1
maximw
@maximw
> Нужно прочитать данные полностью с заданного урла - то что делает file_get_contents, но только в объектно-ориентированном стиле и с использованием имеющегося объекта.
Имеющийся объект это $file? Если да, то никак не прочитать.
Надо делать еще один SplFileObject, он может принимать урл в качестве имени файла.

> И главное - не переписать только начало файла (если полученные данные окажутся короче, чем имеющиеся)
SplFileObject::ftruncate, а затем только писать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы