Files
php-doc-ru/reference/filesystem/functions/file-put-contents.xml
2021-12-23 13:02:26 +03:00

215 lines
7.7 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 .= "John Smith\n";
// Пишем содержимое обратно в файл
file_put_contents($file, $current);
?>
]]>
</programlisting>
</example>
<example>
<title>Использование флагов</title>
<programlisting role="php">
<![CDATA[
<?php
$file = 'people.txt';
// Новый человек, которого нужно добавить в файл
$person = "John Smith\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
-->