Phar
&reftitle.intro;
Модуль phar предоставляет возможность поместить целое PHP-приложение в один-единственный файл c именем
phar (PHP Archive) для простого распространения и
установки. Помимо этого, модуль phar предоставляет метод абстракции формата файла
для создания и обработки архивов tar и zip через класс
PharData, примерно как PDO обеспечивает единый интерфейс
для доступа к различным базам данных.
В отличие от PDO, который не может конвертировать между различными базами данных,
Phar может конвертировать данные
между форматами tar, zip и phar всего одной строкой кода.
Смотрите Phar::convertToExecutable для примера.
Что же такое phar? Phar-архивы лучше всего можно охарактеризовать как удобный способ
группировки нескольких файлов в один. Также phar архив предоставляет возможность
распространять целое PHP-приложение в одном единственном файле и запускать его
прямо из этого файла без необходимости распаковывать его на диск. Кроме того, phar-архивы
могут выполняться PHP с той же лёгкостью, что и любые другие файлы, как из командной
строки, так и через веб-сервер. Phar - это как флеш-накопитель для PHP-приложений.
Phar реализует эту функциональность через потоки.
Обычно, чтобы использовать в PHP-скрипте внешний файл,
вы бы воспользовались, например, include:
Использование внешнего файла
]]>
PHP может рассматривать это как преобразование /path/to/external/file.php
в обёртку потока file:///path/to/external/file.php, а
в действительности он использует потоковые функции обёртки простого файлового потока
для доступа ко всем локальным файлам.
Чтобы использовать файл file.php, находящийся внутри phar-архива
/path/to/myphar.phar, используется синтаксис очень похожий
на синтаксис file:// выше.
Использование файла внутри phar-архива
]]>
На самом деле, можно рассматривать phar-архив как если бы это был внешний диск,
используя любые fopen-подобные функции,
opendir и mkdir-подобные функции для чтения,
изменения, или создания новых файлов и директорий внутри phar-архива. Это позволяет
целому PHP-приложению распространяться в одном файле и запускаться прямо из этого
файла.
Наиболее часто используемое применение для phar-архива - это распространение
целого приложения в одном файле. Например, установщик PEAR, который поставляется
вместе с PHP, является phar-архивом. Для использования phar-архива распространяемого
таким способом, архив может быть выполнен через консоль или через веб-сервер.
Phar-архивы могут распространяться как архивы tar и zip,
или как пользовательский формат файла phar, предназначенный специально для
модуля phar. Каждый формат файла имеет как преимущества, так и недостатки. Форматы tar и
zip могут быть прочитаны или извлечены любой сторонней утилитой которая может работать с
этими форматами. Но чтобы PHP мог их запускать, ему будет необходим модуль phar. Файлы в
phar-формате настраиваются и уникальны для модуля phar, и могут быть созданы только им или
PEAR-пакетом PHP_Archive.
Но их преимущество в том, что приложения, созданные в этом формате, будут работать, даже если
модуль phar не включён.
Другими словами, даже если модуль phar отключён, phar-архив всё равно может быть
выполнен или подключён. Доступ к отдельным файлам в архиве возможен только с модулем
phar, если только архив не был создан с помощью PHP_Archive.
Модуль phar также способно конвертировать phar-архив из tar в zip или в phar-формат
одной командой:
Конвертирование phar-архива из формата phar в формат tar
convertToExecutable(Phar::TAR, Phar::GZ); // создаст myphar.phar.tar.gz
?>
]]>
Phar может сжимать отдельные файлы или архив целиком с использованием
gzip-компрессии или
bzip2-компрессии,
а также автоматически проверять целостность архива, используя сигнатуры
MD5, SHA-1, SHA-256 или SHA-512.
Наконец, модуль Phar заботится о вашей безопасности и отключает доступ на запись
для исполняемых phar-архивов по умолчанию, а также требует отключения на системном
уровне настройки phar.readonly в php.ini для создания или изменения
phar-архивов. Обычные неисполняемые архивы tar и zip, всегда могут быть созданы или
изменены с помощью класса PharData.
Если вы создаёте приложение с целью распространения, вы, возможно, захотите прочитать
раздел Как создавать Phar-архивы.
Если вам нужно больше информации об отличиях между тремя поддерживаемыми phar
форматами файлов, вам следует прочитать раздел
Phar, Tar и Zip.
Если вы используете phar-приложение, то полезные советы находятся в разделе
Как использовать phar-архивы.
Слово phar - это сокращение от PHP и
Archive, и оно частично основано на jar
(Java Archive), знакомом Java-разработчикам.
Реализация Phar-архивов основана на PEAR-пакете
PHP_Archive, и
детали реализации схожи, хотя модуль Phar гораздо мощнее.
Кроме того, модуль Phar позволяет большинству PHP-приложений запускаться
без изменений, тогда как phar-архивы, основанные на PHP_Archive, часто
требуют существенных изменений для работы.
&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;