# Класс Phar

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

## Введение

Класс Phar предоставляет высокоуровневый интерфейс создания phar-архивов и доступа к ним.

## Обзор класса

class Phar extends RecursiveDirectoryIterator implements Countable, ArrayAccess {
/* Наследуемые константы */
public const int FilesystemIterator::CURRENT_MODE_MASK;
public const int FilesystemIterator::CURRENT_AS_PATHNAME;
public const int FilesystemIterator::CURRENT_AS_FILEINFO;
public const int FilesystemIterator::CURRENT_AS_SELF;
public const int FilesystemIterator::KEY_MODE_MASK;
public const int FilesystemIterator::KEY_AS_PATHNAME;
public const int FilesystemIterator::FOLLOW_SYMLINKS;
public const int FilesystemIterator::KEY_AS_FILENAME;
public const int FilesystemIterator::NEW_CURRENT_AND_KEY;
public const int FilesystemIterator::OTHER_MODE_MASK;
public const int FilesystemIterator::SKIP_DOTS;
public const int FilesystemIterator::UNIX_PATHS;
/* Константы */
const int BZ2;
const int GZ;
const int NONE;
const int PHAR;
const int TAR;
const int ZIP;
const int COMPRESSED;
const int PHP;
const int PHPS;
const int MD5;
const int OPENSSL;
const int OPENSSL_SHA256;
const int OPENSSL_SHA512;
const int SHA1;
const int SHA256;
const int SHA512;
/* Методы */
public function __construct(string `$filename`, int `$flags` = FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS, ?string `$alias` = `null`)
public function addEmptyDir(string `$directory`): void
public function addFile(string `$filename`, ?string `$localName` = `null`): void
public function addFromString(string `$localName`, string `$contents`): void
final public static function apiVersion(): string
public function buildFromDirectory(string `$directory`, string `$pattern` = ""): array
public function buildFromIterator(Traversable `$iterator`, ?string `$baseDirectory` = `null`): array
final public static function canCompress(int `$compression` = 0): bool
final public static function canWrite(): bool
public function compress(int `$compression`, ?string `$extension` = `null`): ?Phar
public function compressFiles(int `$compression`): void
public function convertToData(?int `$format` = `null`, ?int `$compression` = `null`, ?string `$extension` = `null`): ?PharData
public function convertToExecutable(?int `$format` = `null`, ?int `$compression` = `null`, ?string `$extension` = `null`): ?Phar
public function copy(string `$from`, string `$to`): true
public function count(int `$mode` = `COUNT_NORMAL`): int
final public static function createDefaultStub(?string `$index` = `null`, ?string `$webIndex` = `null`): string
public function decompress(?string `$extension` = `null`): ?Phar
public function decompressFiles(): true
public function delMetadata(): true
public function delete(string `$localName`): true
public function extractTo(string `$directory`, array|string|null `$files` = `null`, bool `$overwrite` = `false`): bool
public function getAlias(): ?string
public function getMetadata(array `$unserializeOptions` = []): mixed
public function getModified(): bool
public function getPath(): string
public function getSignature(): array|false
public function getStub(): string
final public static function getSupportedCompression(): array
final public static function getSupportedSignatures(): array
public function getVersion(): string
public function hasMetadata(): bool
final public static function interceptFileFuncs(): void
public function isBuffering(): bool
public function isCompressed(): int|false
public function isFileFormat(int `$format`): bool
final public static function isValidPharFilename(string `$filename`, bool `$executable` = `true`): bool
public function isWritable(): bool
final public static function loadPhar(string `$filename`, ?string `$alias` = `null`): bool
final public static function mapPhar(?string `$alias` = `null`, int `$offset` = 0): bool
final public static function mount(string `$pharPath`, string `$externalPath`): void
final public static function mungServer(array `$variables`): void
public function offsetExists(string `$localName`): bool
public function offsetGet(string `$localName`): SplFileInfo
public function offsetSet(string `$localName`, resource|string `$value`): void
public function offsetUnset(string `$localName`): void
final public static function running(bool `$returnPhar` = `true`): string
public function setAlias(string `$alias`): true
public function setDefaultStub(?string `$index` = `null`, ?string `$webIndex` = `null`): true
public function setMetadata(mixed `$metadata`): void
public function setSignatureAlgorithm(int `$algo`, ?string `$privateKey` = `null`): void
public function setStub(resource|string `$stub`, int `$length` = -1): true
public function startBuffering(): void
public function stopBuffering(): void
final public static function unlinkArchive(string `$filename`): true
final public static function webPhar(
?string `$alias` = `null`,
?string `$index` = `null`,
?string `$fileNotFoundScript` = `null`,
array `$mimeTypes` = [],
?callable `$rewrite` = `null`
): void
public function __destruct()
/* Наследуемые методы */
public function RecursiveDirectoryIterator::getChildren(): RecursiveDirectoryIterator
public function RecursiveDirectoryIterator::getSubPath(): string
public function RecursiveDirectoryIterator::getSubPathname(): string
public function RecursiveDirectoryIterator::hasChildren(bool `$allowLinks` = `false`): bool
public function RecursiveDirectoryIterator::key(): string
public function RecursiveDirectoryIterator::next(): void
public function RecursiveDirectoryIterator::rewind(): void
public function FilesystemIterator::current(): string|SplFileInfo|FilesystemIterator
public function FilesystemIterator::getFlags(): int
public function FilesystemIterator::key(): string
public function FilesystemIterator::next(): void
public function FilesystemIterator::rewind(): void
public function FilesystemIterator::setFlags(int `$flags`): void
public function DirectoryIterator::current(): mixed
public function DirectoryIterator::getBasename(string `$suffix` = ""): string
public function DirectoryIterator::getExtension(): string
public function DirectoryIterator::getFilename(): string
public function DirectoryIterator::isDot(): bool
public function DirectoryIterator::key(): mixed
public function DirectoryIterator::next(): void
public function DirectoryIterator::rewind(): void
public function DirectoryIterator::seek(int `$offset`): void
public function DirectoryIterator::__toString(): string
public function DirectoryIterator::valid(): bool
public function SplFileInfo::getATime(): int|false
public function SplFileInfo::getBasename(string `$suffix` = ""): string
public function SplFileInfo::getCTime(): int|false
public function SplFileInfo::getExtension(): string
public function SplFileInfo::getFileInfo(?string `$class` = `null`): SplFileInfo
public function SplFileInfo::getFilename(): string
public function SplFileInfo::getGroup(): int|false
public function SplFileInfo::getInode(): int|false
public function SplFileInfo::getLinkTarget(): string|false
public function SplFileInfo::getMTime(): int|false
public function SplFileInfo::getOwner(): int|false
public function SplFileInfo::getPath(): string
public function SplFileInfo::getPathInfo(?string `$class` = `null`): ?SplFileInfo
public function SplFileInfo::getPathname(): string
public function SplFileInfo::getPerms(): int|false
public function SplFileInfo::getRealPath(): string|false
public function SplFileInfo::getSize(): int|false
public function SplFileInfo::getType(): string|false
public function SplFileInfo::isDir(): bool
public function SplFileInfo::isExecutable(): bool
public function SplFileInfo::isFile(): bool
public function SplFileInfo::isLink(): bool
public function SplFileInfo::isReadable(): bool
public function SplFileInfo::isWritable(): bool
public function SplFileInfo::openFile(string `$mode` = "r", bool `$useIncludePath` = `false`, ?resource `$context` = `null`): SplFileObject
public function SplFileInfo::setFileClass(string `$class` = `SplFileObject::class`): void
public function SplFileInfo::setInfoClass(string `$class` = `SplFileInfo::class`): void
public function SplFileInfo::__toString(): string
}

## Список изменений

Версия | Описание
--- | ---
8.4.0 | Добавлена поддержка модуля меток времени эпохи Unix для архивов на основе Zip.
8.0.0 | Метаданные больше не десериализуются при открытии архива, а откладываются до вызова метода Phar::getMetadata().

## Примечания

Предостережение

До PHP 8.0.0 метаданные десериализовались при открытии архива, что могло привести к уязвимостям в безопасности. Начиная с PHP 8.0.0, метаданные десериализуются только при вызове метода Phar::getMetadata(), у которого есть опции для ограничения десериализации из соображений безопасности.

## Содержание

- Phar::addEmptyDir — Добавляет в phar-архив пустую директорию
- Phar::addFile — Добавляет в phar-архив файл из файловой системы
- Phar::addFromString — Добавляет в phar-архив файл из строки
- Phar::apiVersion — Возвращает версию API
- Phar::buildFromDirectory — Создаёт phar-архив из файлов, расположенных внутри директории
- Phar::buildFromIterator — Создаёт phar-архив из итератора
- Phar::canCompress — Проверяет, поддерживает ли модуль phar сжатие с использованием zlib или bzip2
- Phar::canWrite — Проверяет, поддерживает ли модуль phar сохранение и создание phar-архивов
- Phar::compress — Сжимает весь Phar-архив с помощью Gzip- или Bzip2-сжатия
- Phar::compressFiles — Сжимает все файлы в текущем Phar-архиве
- Phar::__construct — Создаёт объект Phar-архива
- Phar::convertToData — Конвертирует phar-архив в неисполняемый tar- или zip-файл
- Phar::convertToExecutable — Конвертирует phar-архив в другой исполняемый формат файла
- Phar::copy — Копирует файл внутри phar-архива в новый файл внутри phar-архива
- Phar::count — Возвращает количество записей (файлов) в Phar-архиве
- Phar::createDefaultStub — Создать заглушку в формате phar-архива
- Phar::decompress — Распаковывает весь Phar-архив
- Phar::decompressFiles — Распаковывает все файлы в текущем Phar-архиве
- Phar::delMetadata — Удаляет глобальные метаданные в phar-архиве
- Phar::delete — Удаляет файл в phar-архиве
- Phar::__destruct — Уничтожает объект архива Phar
- Phar::extractTo — Извлечь содержимое phar-архива в директорию
- Phar::getAlias — Получить псевдоним для Phar
- Phar::getMetadata — Извлечь метаданные phar-архива
- Phar::getModified — Определить, изменялся phar-архив
- Phar::getPath — Получить реальный путь к Phar-архиву на диске
- Phar::getSignature — Получить MD5/SHA1/SHA256/SHA512/OpenSSL подпись Phar-архива
- Phar::getStub — Получить загрузчик PHP или загрузчик заглушки Phar-архива
- Phar::getSupportedCompression — Возвращает массив поддерживаемых алгоритмов сжатия
- Phar::getSupportedSignatures — Получить массив поддерживаемых алгоритмов подписи архива
- Phar::getVersion — Получить версию Phar-архива
- Phar::hasMetadata — Проверить, содержит ли phar-архив глобальные метаданные
- Phar::interceptFileFuncs — Указывает phar перехватывать fopen, file_get_contents, opendir и все stat-функции
- Phar::isBuffering — Проверить, будут ли операции с Phar-архивом буферизованы или записаны напрямую на диск
- Phar::isCompressed — Возвращает Phar::GZ или PHAR::BZ2, если phar-архив сжат целиком (.tar.gz/tar.bz и так далее)
- Phar::isFileFormat — Проверить, что phar-архив имеет заданный формат (tar/phar/zip)
- Phar::isValidPharFilename — Проверяет, что заданное имя файла является корректным именем phar-архива
- Phar::isWritable — Проверяет, можно ли модифицировать phar-архив
- Phar::loadPhar — Загрузить phar-архив с псевдонимом
- Phar::mapPhar — Прочитать текущий запущенный phar-архив и зарегистрировать его манифест
- Phar::mount — Монтирование внешнего путь или файла к виртуальному пути в phar-архиве
- Phar::mungServer — Определить список до четырёх $_SERVER-переменных, которые должны быть изменены для запуска
- Phar::offsetExists — Определить, есть ли файл в архиве
- Phar::offsetGet — Получить объект PharFileInfo для конкретного файла
- Phar::offsetSet — Изменение содержимого файла
- Phar::offsetUnset — Удалить файл из phar-архива
- Phar::running — Получить полный путь на диске, либо полный URL запущенного Phar-архива
- Phar::setAlias — Установить псевдоним для Phar-архива
- Phar::setDefaultStub — Установить загрузчик PHP или начальную заглушку Phar-архива в загрузчик по умолчанию
- Phar::setMetadata — Установить метаданные phar-архива
- Phar::setSignatureAlgorithm — Установить алгоритм подписания phar-архива и применение его
- Phar::setStub — Устанавливает в Phar-архив заглушку, которая играет роль начального загрузчика PHP
- Phar::startBuffering — Запускает буферизацию операций записи, отключая запись изменений Phar-архива на диск
- Phar::stopBuffering — Останавливает буферизацию и записывает все изменения на диск
- Phar::unlinkArchive — Удаляет архив из памяти и с диска
- Phar::webPhar — Направляет запрос из браузера во внутренний файл в phar-архиве

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open