Задать вопрос

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

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

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

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

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


Вот на чтении и перезаписи я застопорился. Нужно прочитать данные полностью с заданного урла - то что делает file_get_contents, но только в объектно-ориентированном стиле и с использованием имеющегося объекта. И главное - не переписать только начало файла (если полученные данные окажутся короче, чем имеющиеся). Смотрю на список методов SplFIleObject и никак не могу понять, как это сделать.
  • Вопрос задан
  • 308 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
maximw
@maximw
> Нужно прочитать данные полностью с заданного урла - то что делает file_get_contents, но только в объектно-ориентированном стиле и с использованием имеющегося объекта.
Имеющийся объект это $file? Если да, то никак не прочитать.
Надо делать еще один SplFileObject, он может принимать урл в качестве имени файла.

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

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

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