Запись данных в файл. Какие функции PHP отвечают за эту операцию?

запись данных в файл. какие функции php отвечают за эту операцию?

Запись данных целиком

Довольно часто требуется записать информацию в файл за один раз, без открытия дескриптора и построчной обработки данных. В PHP специально для решения этой задачи есть функция file_put_contents(). Её первый параметр принимает путь до файла, а второй — строку, предназначенную для записи.

Если файл на момент вызова не существует, он будет создан. Однако для осуществления этой операции нужны права, позволяющие создавать файлы в указанной директории. Обратите внимание на то, что данная функция перед осуществлением записи затирает всё содержимое файла.

Перезаписывание файла можно отменить за счет третьего необязательного параметра. Он принимает три вида флагов, которые могут быть объединены с помощью побитового оператора «или», записываемого как вертикальная черта «|».

Список доступных флагов:

  • FILE_APPEND — если файл существует, запись будет произведена в его конец.
  • FILE_USE_INCLUDE_PATH — присутствие данного флага говорит интерпретатору о том, что файл нужно искать в специальной директории. Она задается через конфигурацию php.ini с помощью параметра include_path.
  • LOCK_EX — при записи данных будет осуществлена эксклюзивная блокировка файла. Подробнее о блокировках рассказывается в следующих уроках.
//Используем функцию c флагом дописывания
$fileName = $_SERVER['DOCUMENT_ROOT']. '/test-file.txt';
$content  = "Данная строка будет записана в файл\n";
$length   = file_put_contents($fileName, $content, FILE_APPEND);

//Выводим отладочную информацию в браузер
if ($length !== false) {
    echo "В процессе выполнения было записано {$length} байт";

} else {
    echo "В процессе выполнения возникли ошибки";
}

Функция file_put_contents() возвращает либо число записанных байт, либо false в случае ошибки. Обратите внимание на пример, приведенный выше. Проверка возвращаемого значения происходит с помощью строгого сравнения. Это необходимо, так как для записи в файл можно передать пустую строку. В таком случае функция вернет число «0». Если использовать обычное сравнение, «0» будет приведен к логическому значению false и программа сделает неправильные выводы.

Заметка
Флаги являются глобальными константами. Они создаются PHP-интерпретатором автоматически. Некоторые программисты предпочитают использовать числовые значения данных констант. Например, вместо FILE_APPEND писать число «8». Мы не рекомендуем практиковать такой подход, так как имя константы само себя документирует. Со временем можно забыть, какое число за что отвечает.

Построчная запись в файл

Запись информации в файл может вестись и построчно. Для этого в PHP существует всего одна функция fwrite() с псевдонимом fputs(). Принцип действия довольно прост. В первом параметре она принимает дескриптор файла, а во втором строку, предназначенную для записи.

После завершения операции функция возвращает количество записанных байт, или false в случае ошибки. Также у функции есть третий необязательный параметр. Он является числовым и указывает на количество записываемых байт, после которых выполнение завершается автоматически.

//Открываем дескриптор и определяем данные
$handle = fopen($_SERVER['DOCUMENT_ROOT']. '/test-file.txt', 'w');
$content = "Всё содержимое строки будет записано в файл\n ";

//Запись только двух слов за счет третьего параметра
if ($handle !== null) {
    $length = fwrite($handle, $content, 27);
    fclose($handle);

    if ($length !== false) {
        echo "В процессе выполнения было записано {$length} байт";
    } else {
        echo "В процессе выполнения возникли ошибки";
    }

} else {
    echo "Невозможно открыть файл для записи";
}

Последние публикации