Files
php-doc-ru/reference/filesystem/functions/file-put-contents.xml
2024-02-11 11:27:59 +03:00

227 lines
7.9 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ea62fb83196997032641b50fe44420305466195e Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.file-put-contents">
<refnamediv>
<refname>file_put_contents</refname>
<refpurpose>Записывает данные в файл</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>false</type></type><methodname>file_put_contents</methodname>
<methodparam><type>string</type><parameter>filename</parameter></methodparam>
<methodparam><type>mixed</type><parameter>data</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>flags</parameter><initializer>0</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>resource</type><type>null</type></type><parameter>context</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
Функция работает так же, как последовательный вызов функций
<function>fopen</function>, <function>fwrite</function>
и <function>fclose</function> для записи данных в файл.
</para>
<para>
Если путь <parameter>filename</parameter> не существует, функция создаст файл.
В противном случае она перезапишет существующий файл,
если не установлен флаг <constant>FILE_APPEND</constant>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>filename</parameter></term>
<listitem>
<para>
Путь к файлу, в который функция будет записывать данные.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>data</parameter></term>
<listitem>
<para>
Записываемые данные. Разрешено передавать строку (<type>string</type>),
массив (<type>array</type>) или ресурс потока.
</para>
<para>
Если данные <parameter>data</parameter>ресурс потока
(<type>stream</type>), функция скопирует оставшийся буфер потока
в файл. Это похоже на работу функции
<function>stream_copy_to_stream</function>.
</para>
<para>
Допустимо определять параметр <parameter>data</parameter>
как одномерный массив. Это будет эквивалентно вызову
<literal>file_put_contents($filename, implode('', $array))</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>flags</parameter></term>
<listitem>
<para>
В параметр <parameter>flags</parameter> разрешено передавать
произвольные комбинации следующих флагов, соединяя их бинарным
оператором ИЛИ (<literal>|</literal>).
</para>
<para>
<table>
<title>Доступные флаги</title>
<tgroup cols="2">
<thead>
<row>
<entry>Флаг</entry>
<entry>Описание</entry>
</row>
</thead>
<tbody>
<row>
<entry>
<constant>FILE_USE_INCLUDE_PATH</constant>
</entry>
<entry>
Ищет файл <parameter>filename</parameter>
во включённых каталогах.
Параграф <link linkend="ini.include-path">include_path</link>
даёт дополнительную информацию.
</entry>
</row>
<row>
<entry>
<constant>FILE_APPEND</constant>
</entry>
<entry>
Функция допишет данные в конец файла вместо того, чтобы перезаписать его,
если файл <parameter>filename</parameter> уже существует.
</entry>
</row>
<row>
<entry>
<constant>LOCK_EX</constant>
</entry>
<entry>
Получает эксклюзивную блокировку файла на время записи. Другими словами,
между вызовами функций <function>fopen</function> и <function>fwrite</function>
произойдёт вызов функции <function>flock</function>. Это не тождественно
вызову функции <function>fopen</function> с флагом «x».
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>context</parameter></term>
<listitem>
<para>
Допустимый ресурс контекста, который создан функцией
<function>stream_context_create</function>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает количество байтов, которые процесс записал в файл,
или &false; в случае ошибки.
</para>
&return.falseproblem;
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример простого использования</title>
<programlisting role="php">
<![CDATA[
<?php
$file = 'people.txt';
// Открываем файл, чтобы получить существующее содержимое
$current = file_get_contents($file);
// Добавляем нового человека в файл
$current .= "Джон Смит\n";
// Записываем содержимое обратно в файл
file_put_contents($file, $current);
?>
]]>
</programlisting>
</example>
<example>
<title>Использование флагов</title>
<programlisting role="php">
<![CDATA[
<?php
$file = 'people.txt';
// Новый человек, которого нужно добавить в файл
$person = "Джон Смит\n";
// Записываем содержимое в файл
// с флагом FILE_APPEND, чтобы дописать содержимое в конец файла,
// и флагом LOCK_EX, чтобы никто другой не мог записывать данные в файл в то же самое время
file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
&note.bin-safe;
&tip.fopen-wrapper;
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>fopen</function></member>
<member><function>fwrite</function></member>
<member><function>file_get_contents</function></member>
<member><function>stream_context_create</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->