1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
archived-doc-ru/reference/phar/book.xml
Sergey Panteleev daef8df962 Обнуление тега Reviewed (#364)
[skip-lint]
[skip-spellcheck]
2021-11-16 13:03:53 +03:00

191 lines
11 KiB
XML
Raw Permalink 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: 562a216c8108885a492cbfb66e2d5734847fa19d Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<book xml:id="book.phar" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<?phpdoc extension-membership="bundled" ?>
<title>Phar</title>
<!-- {{{ preface -->
<preface xml:id="intro.phar">
&reftitle.intro;
<para>
Модуль phar предоставляет возможность поместить целое PHP-приложение в один-единственный файл c именем
phar (PHP Archive) для простого распространения и
установки. Помимо этого, модуль phar предоставляет метод абстракции формата файла
для создания и обработки архивов tar и zip через класс
<classname>PharData</classname>, примерно как PDO обеспечивает единый интерфейс
для доступа к различным базам данных.
В отличие от PDO, который не может конвертировать между различными базами данных,
Phar может конвертировать данные
между форматами tar, zip и phar всего одной строкой кода.
Смотрите <function>Phar::convertToExecutable</function> для примера.
</para>
<para>
Что же такое phar? Phar-архивы лучше всего можно охарактеризовать как удобный способ
группировки нескольких файлов в один. Также phar архив предоставляет возможность
распространять целое PHP-приложение в одном единственном файле и запускать его
прямо из этого файла без необходимости распаковывать его на диск. Кроме того, phar-архивы
могут выполняться PHP с той же лёгкостью, что и любые другие файлы, как из командной
строки, так и через веб-сервер. Phar - это как флеш-накопитель для PHP-приложений.
</para>
<para>
Phar реализует эту функциональность через <link linkend="book.stream">потоки</link>.
Обычно, чтобы использовать в PHP-скрипте внешний файл,
вы бы воспользовались, например, <function>include</function>:
</para>
<para>
<example>
<title>Использование внешнего файла</title>
<programlisting role="php">
<![CDATA[
<?php
include '/path/to/external/file.php';
?>
]]>
</programlisting>
</example>
</para>
<para>
PHP может рассматривать это как преобразование <literal>/path/to/external/file.php</literal>
в обёртку потока <literal>file:///path/to/external/file.php</literal>, а
в действительности он использует потоковые функции обёртки простого файлового потока
для доступа ко всем локальным файлам.
</para>
<para>
Чтобы использовать файл <literal>file.php</literal>, находящийся внутри phar-архива
<literal>/path/to/myphar.phar</literal>, используется синтаксис очень похожий
на синтаксис <literal>file://</literal> выше.
</para>
<para>
<example>
<title>Использование файла внутри phar-архива</title>
<programlisting role="php">
<![CDATA[
<?php
include 'phar:///path/to/myphar.phar/file.php';
?>
]]>
</programlisting>
</example>
</para>
<para>
На самом деле, можно рассматривать phar-архив как если бы это был внешний диск,
используя любые <function>fopen</function>-подобные функции,
<function>opendir</function> и <function>mkdir</function>-подобные функции для чтения,
изменения, или создания новых файлов и директорий внутри phar-архива. Это позволяет
целому PHP-приложению распространяться в одном файле и запускаться прямо из этого
файла.
</para>
<para>
Наиболее часто используемое применение для phar-архива - это распространение
целого приложения в одном файле. Например, установщик PEAR, который поставляется
вместе с PHP, является phar-архивом. Для использования phar-архива распространяемого
таким способом, архив может быть выполнен через консоль или через веб-сервер.
</para>
<para>
Phar-архивы могут распространяться как архивы <literal>tar</literal> и <literal>zip</literal>,
или как пользовательский формат файла <literal>phar</literal>, предназначенный специально для
модуля phar. Каждый формат файла имеет как преимущества, так и недостатки. Форматы tar и
zip могут быть прочитаны или извлечены любой сторонней утилитой которая может работать с
этими форматами. Но чтобы PHP мог их запускать, ему будет необходим модуль phar. Файлы в
phar-формате настраиваются и уникальны для модуля phar, и могут быть созданы только им или
PEAR-пакетом <link xlink:href="&url.pear.package;PHP_Archive">PHP_Archive</link>.
Но их преимущество в том, что приложения, созданные в этом формате, будут работать, даже если
модуль phar не включён.
</para>
<para>
Другими словами, даже если модуль phar отключён, phar-архив всё равно может быть
выполнен или подключён. Доступ к отдельным файлам в архиве возможен только с модулем
phar, если только архив не был создан с помощью PHP_Archive.
</para>
<para>
Модуль phar также способно конвертировать phar-архив из tar в zip или в phar-формат
одной командой:
</para>
<para>
<example>
<title>Конвертирование phar-архива из формата phar в формат tar</title>
<programlisting role="php">
<![CDATA[
<?php
$phar = new Phar('myphar.phar');
$pgz = $phar->convertToExecutable(Phar::TAR, Phar::GZ); // создаст myphar.phar.tar.gz
?>
]]>
</programlisting>
</example>
</para>
<para>
Phar может сжимать отдельные файлы или архив целиком с использованием
<link linkend="book.zlib">gzip</link>-компрессии или
<link linkend="book.bzip2">bzip2</link>-компрессии,
а также автоматически проверять целостность архива, используя сигнатуры
MD5, SHA-1, SHA-256 или SHA-512.
</para>
<para>
Наконец, модуль Phar заботится о вашей безопасности и отключает доступ на запись
для исполняемых phar-архивов по умолчанию, а также требует отключения на системном
уровне настройки <literal>phar.readonly</literal> в php.ini для создания или изменения
phar-архивов. Обычные неисполняемые архивы tar и zip, всегда могут быть созданы или
изменены с помощью класса <classname>PharData</classname>.
</para>
<para>
Если вы создаёте приложение с целью распространения, вы, возможно, захотите прочитать
раздел <link linkend="phar.creating">Как создавать Phar-архивы</link>.
Если вам нужно больше информации об отличиях между тремя поддерживаемыми phar
форматами файлов, вам следует прочитать раздел
<link linkend="phar.fileformat">Phar, Tar и Zip</link>.
</para>
<para>
Если вы используете phar-приложение, то полезные советы находятся в разделе
<link linkend="phar.using">Как использовать phar-архивы</link>.
</para>
<para>
Слово <literal>phar</literal> - это сокращение от <literal>PHP</literal> и
<literal>Archive</literal>, и оно частично основано на <literal>jar</literal>
(Java Archive), знакомом Java-разработчикам.
</para>
<para>
Реализация Phar-архивов основана на PEAR-пакете
<link xlink:href="&url.pear.package;PHP_Archive">PHP_Archive</link>, и
детали реализации схожи, хотя модуль Phar гораздо мощнее.
Кроме того, модуль Phar позволяет большинству PHP-приложений запускаться
без изменений, тогда как phar-архивы, основанные на PHP_Archive, часто
требуют существенных изменений для работы.
</para>
</preface>
<!-- }}} -->
&reference.phar.setup;
&reference.phar.constants;
&reference.phar.using;
&reference.phar.creating;
&reference.phar.fileformat;
&reference.phar.Phar;
&reference.phar.PharData;
&reference.phar.PharFileInfo;
&reference.phar.PharException;
</book>
<!-- 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
-->