Ответ
PHAR (PHP Archive) — это формат упаковки PHP-приложений, библиотек или утилит в единый исполняемый файл, аналогичный JAR в Java. Файл .phar содержит весь необходимый код, ресурсы и метаданные, что упрощает распространение и развертывание.
Основные возможности:
- Исполняемость: PHAR-файл можно запустить как обычный PHP-скрипт:
php myapp.phar. - Сжатие: Поддержка сжатия gzip или bzip2 для уменьшения размера.
- Встроенный загрузчик (stub): Автоматическая загрузка содержимого архива.
Пример создания простого PHAR-архива:
// create-phar.php
$pharFile = 'myapp.phar';
// Убедитесь, что phar.readonly=Off в php.ini
if (file_exists($pharFile)) {
unlink($pharFile);
}
$phar = new Phar($pharFile);
// Добавляем все файлы из директории src/
$phar->buildFromDirectory(__DIR__ . '/src');
// Устанавливаем точку входа (файл, который запустится при выполнении)
$phar->setDefaultStub('index.php');
Где я с этим сталкивался: Многие популярные инструменты экосистемы PHP распространяются именно в виде PHAR-файлов, что делает их установку тривиальной — просто скачать один файл. Например:
- Composer (
composer.phar) - PHPUnit
- Psalm или PHPStan (статические анализаторы)
При разработке внутренних CLI-инструментов для компании мы также использовали PHAR для упаковки, что значительно упрощало их доставку на продакшн-сервера — не нужно было копировать целые директории с зависимостями, только один файл.
Ответ 18+ 🔞
А, PHAR! Ну это ж, ёпта, просто праздник какой-то для ленивого задрота. Представь: у тебя там проект — куча файлов, библиотек, ресурсов. И таскать это всё, как говно за пазухой, с сервера на сервер — терпения ноль, ебать. А тут — хук-плюх — один файлик, и в нём всё, что нужно. Красота!
PHAR (PHP Archive) — это, по сути, такая бандура, куда ты можешь запихнуть своё PHP-приложение, библиотеку или утилиту целиком. Получается один исполняемый файл, прямо как JAR в Java, только для наших, для пыховодов. Внутри — весь код, картинки, конфиги, метаданные — овердохуища всего. Распространять и разворачивать — одно удовольствие, а не работа.
Что он умеет, этот красавчик:
- Запускаться как скрипт: Сказал
php myapp.phar— и поехали. Никаких танцев с бубном. - Жаться: Можешь его придавить gzip'ом или bzip2'ом, чтобы не раздувался, как пирожок после столовки.
- Самозагружаться: Встроенный заглушечный код (stub) сам всё подтянет из своего же брюха, когда начнёшь исполнять. Умная жопа, короче.
Вот, смотри, как его слепить из говна и палок:
// create-phar.php
$pharFile = 'myapp.phar';
// Главное, не забудь в php.ini поставить phar.readonly=Off, а то нихуя не получится — будет ругаться, как баба на рынке.
if (file_exists($pharFile)) {
unlink($pharFile); // Старый — нахуй, будем новый делать.
}
$phar = new Phar($pharFile);
// Запихиваем в него всю папку src/ со всем её содержимым. Проще некуда.
$phar->buildFromDirectory(__DIR__ . '/src');
// Говорим ему, с какого файла начинать, когда его запустят.
$phar->setDefaultStub('index.php');
А где я с этим в жизни пересекался? Да везде, блядь! Пол-интернета на этом стоит. Куча популярных PHP-шных инструментов именно так и распространяются — одним файлом. Скачал — и тут же пользуешься. Например:
- Composer (тот самый
composer.phar) — без него жизнь вообще немыслима. - PHPUnit — чтобы тесты гонять.
- Psalm или PHPStan — эти умники, которые код на ошибки проверяют.
Мы на работе тоже для своих внутренних консольных утилит использовали PHAR. Представляешь, вместо того чтобы на каждый продакшн-сервер тащить целую папку с вендорами и скриптами — просто кидаешь один файлик. И всё. Никаких "ой, зависимость не подтянулась", "ой, путь кривой". Просто, надёжно, ебать мои старые костыли. Идеально.