# A classe Phar

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

## Introdução

A classe Phar fornece uma interface de alto nível para acessar e criar arquivos phar.

## Resumo da classe

class Phar extends RecursiveDirectoryIterator implements Countable, ArrayAccess {
/* Constantes herdadas */
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;
/* Constantes */
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;
/* Métodos */
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()
/* Métodos herdados */
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
}

## Registro de Alterações

Versão | Descrição
--- | ---
8.4.0 | Adicionado suporte para a extensão de timestamp Unix para arquivos baseados em Zip.
8.0.0 | Metadados não são mais desserializados ao abrir o arquivo, esta atividade é adiada até que Phar::getMetadata() seja chamado.

## Notas

Cuidado

Anteriormente ao PHP 8.0.0, os metadados eram desserializados na abertura do arquivo. Isso poderia levar a vulnerabilidades de segurança. Iniciando com o PHP 8.0.0, os metadados são desserializados somente ao chamar Phar::getMetadata(), que tem opções para restringir a desserialização por motivos de segurança.

## Índice

- Phar::addEmptyDir — Adiciona um diretório vazio ao arquivo phar
- Phar::addFile — Adiciona um arquivo do sistema de arquivos ao arquivo phar
- Phar::addFromString — Adiciona um arquivo a partir de uma string ao arquivo phar
- Phar::apiVersion — Retorna a versão da API
- Phar::buildFromDirectory — Constrói um arquivo phar a partir dos arquivos dentro de um diretório
- Phar::buildFromIterator — Constrói um arquivo phar a partir de um iterador
- Phar::canCompress — Retorna se a extensão phar suporta compactação usando zlib ou bzip2
- Phar::canWrite — Retorna se a extensão phar suporta a escrita e criação de phars
- Phar::compress — Compacta todo o arquivo Phar usando compactação Gzip ou Bzip2
- Phar::compressFiles — Compacta todos os arquivos no arquivo Phar atual
- Phar::__construct — Constrói um objeto de arquivo Phar
- Phar::convertToData — Converte um arquivo phar em um arquivo tar ou zip não executável
- Phar::convertToExecutable — Converte um arquivo phar em outro formato de arquivo executável phar
- Phar::copy — Copia um arquivo interno do arquivo phar para outro novo arquivo dentro do phar
- Phar::count — Retorna o número de entradas (arquivos) no arquivo Phar
- Phar::createDefaultStub — Cria um stup de formato específico de arquivo phar
- Phar::decompress — Descompacta todo o arquivo Phar
- Phar::decompressFiles — Descompacta todos os arquivos no arquivo Phar atual
- Phar::delMetadata — Exclui os metadados globais do phar
- Phar::delete — Exclui um arquivo dentro de um arquivo phar
- Phar::__destruct — Destrói um objeto de arquivo Phar
- Phar::extractTo — Extrai o conteúdo de um arquivo phar para um diretório
- Phar::getAlias — Obtém o apelido para o Phar
- Phar::getMetadata — Retorna metadados do arquivo phar
- Phar::getModified — Informa se o phar foi modificado
- Phar::getPath — Obtém o caminho real para o arquivo Phar no disco
- Phar::getSignature — Retorna a assinatura MD5/SHA1/SHA256/SHA512/OpenSSL de um arquivo Phar
- Phar::getStub — Retorna o carregador PHP ou o stub de inicialização de um arquivo Phar
- Phar::getSupportedCompression — Retorna um array de algoritmos de compactação suportados
- Phar::getSupportedSignatures — Retorna um array de tipos de assinatura suportados
- Phar::getVersion — Retorna informações da versão do arquivo Phar
- Phar::hasMetadata — Informa se o phar tem metadados globais
- Phar::interceptFileFuncs — Instrui phar a interceptar fopen, file_get_contents, opendir e todas as funções relacionadas a stat
- Phar::isBuffering — Usado para determinar se as operações de gravação Phar estão sendo armazenadas em buffer ou estão sendo liberadas diretamente no disco
- Phar::isCompressed — Retorna Phar::GZ ou PHAR::BZ2 se todo o arquivo phar estiver compactado (.tar.gz/tar.bz e assim por diante)
- Phar::isFileFormat — Informa se o arquivo phar é baseado no formato de arquivo tar/phar/zip dependendo do parâmetro
- Phar::isValidPharFilename — Informa se o nome de arquivo fornecido é um nome de arquivo phar válido
- Phar::isWritable — Informa se o arquivo phar pode ser modificado
- Phar::loadPhar — Carrega qualquer arquivo phar com um apelido
- Phar::mapPhar — Lê o arquivo atualmente em execução (um phar) e registra seu manifesto
- Phar::mount — Monta um caminho externo ou arquivo em um local virtual dentro do arquivo phar
- Phar::mungServer — Define uma lista de até 4 variáveis ​​$_SERVER que devem ser modificadas para execução
- Phar::offsetExists — Determina se um arquivo existe no phar
- Phar::offsetGet — Obtém um objeto PharFileInfo para um arquivo específico
- Phar::offsetSet — Define o conteúdo de um arquivo interno para o de um arquivo externo
- Phar::offsetUnset — Remove um arquivo de um phar
- Phar::running — Retorna o caminho completo no disco ou a URL completa do arquivo Phar em execução no momento
- Phar::setAlias — Define o apelido para o arquivo Phar
- Phar::setDefaultStub — Usado para definir o carregador PHP ou o stub de bootstrap de um arquivo Phar para o carregador padrão
- Phar::setMetadata — Define metadados do arquivo phar
- Phar::setSignatureAlgorithm — Define o algoritmo de assinatura para um phar e o aplica
- Phar::setStub — Usado para definir o carregador PHP ou o stub de inicialização de um arquivo Phar
- Phar::startBuffering — Inicia o buffer das operações de gravação Phar, não modifica o objeto Phar no disco
- Phar::stopBuffering — Interrompe o buffer de solicitações de gravação no arquivo Phar e salva as alterações no disco
- Phar::unlinkArchive — Remove completamente um arquivo phar do disco e da memória
- Phar::webPhar — Encaminha uma solicitação de um navegador da web para um arquivo interno dentro do arquivo phar

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