# La clase Phar

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

## Introducción

La clase Phar proporciona una interfaz de alto nivel para acceder y crear archivos phar.

## Sinopsis de la Clase

class Phar extends RecursiveDirectoryIterator implements Countable, ArrayAccess {
/* Constantes heredadas */
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 heredados */
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
}

## Historial de cambios

Versión | Descripción
--- | ---
8.4.0 | Se añadió el soporte para la extensión de timestamp Unix en archivos basados en Zip.
8.0.0 | Los metadatos ya no se deserializan al abrir el archivo, sino que se posponen hasta que se llama a Phar::getMetadata().

## Notas

Precaución

Antes de PHP 8.0.0, los metadatos se deserializaban al abrir el archivo. Esto podía provocar vulnerabilidades de seguridad. A partir de PHP 8.0.0, los metadatos solo se deserializan al llamar a Phar::getMetadata(), que ofrece opciones para restringir la deserialización por razones de seguridad.

## Tabla de contenidos

- Phar::addEmptyDir — Añade un directorio vacío al archivo phar
- Phar::addFile — Añade un fichero del sistema de ficheros al archivo phar
- Phar::addFromString — Añade un fichero desde un string al archivo phar
- Phar::apiVersion — Devuelve la versión de la API
- Phar::buildFromDirectory — Construye un archivo phar a partir de los ficheros de un directorio
- Phar::buildFromIterator — Construye un archivo phar a partir de un iterador
- Phar::canCompress — Determina si la extensión phar soporta la compresión utilizando zip o bzip2
- Phar::canWrite — Determina si la extensión phar soporta la creación y escritura de archivos phar
- Phar::compress — Comprime el archivo Phar completo utilizando la compresión Gzip o Bzip2
- Phar::compressFiles — Comprime todos los ficheros del archivo Phar actual
- Phar::__construct — Construye un objeto de archivo Phar
- Phar::convertToData — Convierte un archivo phar en un fichero no ejecutable
- Phar::convertToExecutable — Convierte un archivo phar a otro formato de archivo de archivo phar ejecutable
- Phar::copy — Copia un fichero perteneciente a un archivo hacia otro fichero del mismo archivo
- Phar::count — Devuelve el número de entradas (ficheros) en el archivo Phar
- Phar::createDefaultStub — Crea un contenedor de carga de un archivo Phar
- Phar::decompress — Descomprime el archivo tar completo
- Phar::decompressFiles — Descomprime todos los ficheros del archivo Phar actual
- Phar::delMetadata — Elimina los metadatos globales del phar
- Phar::delete — Elimina un fichero dentro de un archivo phar
- Phar::__destruct — Destruye un objeto archivo Phar
- Phar::extractTo — Extrae el contenido de un archivo phar hacia un directorio
- Phar::getAlias — Obtiene el alias para Phar
- Phar::getMetadata — Devuelve las metadatos del archivo phar
- Phar::getModified — Indica si el archivo phar ha sido modificado
- Phar::getPath — Obtiene la ruta de acceso absoluta del archivo Phar en el disco
- Phar::getSignature — Devuelve la firma MD5/SHA1/SHA256/SHA512 de un archivo Phar
- Phar::getStub — Retorna el cargador PHP o el contenedor de carga de un archivo Phar
- Phar::getSupportedCompression — Devuelve un array de los algoritmos de compresión soportados
- Phar::getSupportedSignatures — Devuelve un array de los tipos de firma soportados
- Phar::getVersion — Devuelve las informaciones de versión del archivo Phar
- Phar::hasMetadata — Determina si el phar contiene o no metadatos
- Phar::interceptFileFuncs — Indica a phar que debe interceptar las funciones de archivos
- Phar::isBuffering — Determina si las operaciones de escritura de Phar están en búfer o se escriben directamente en el disco
- Phar::isCompressed — Devuelve Phar::GZ o PHAR::BZ2 si el archivo completo está comprimido (.tar.gz/tar.bz, etc)
- Phar::isFileFormat — Retorna true si el archivo phar está basado en el formato de archivo tar/phar/zip según el argumento
- Phar::isValidPharFilename — Determina si el nombre de fichero especificado es un nombre de fichero válido para un archivo phar
- Phar::isWritable — Retorna true si el archivo phar puede ser modificado
- Phar::loadPhar — Carga cualquier archivo phar con un alias
- Phar::mapPhar — Lee el phar ejecutado y carga su manifiesto
- Phar::mount — Monta un camino o un fichero externo a una ubicación virtual dentro del archivo phar
- Phar::mungServer — Define una lista de un máximo de 4 variables $_SERVER que deben ser modificadas durante la ejecución
- Phar::offsetExists — Determina si un fichero existe en el phar
- Phar::offsetGet — Obtiene un objeto PharFileInfo a partir de un fichero
- Phar::offsetSet — Establece el contenido de un fichero interno en el archivo a partir del contenido de un fichero externo
- Phar::offsetUnset — Elimina un fichero de un phar
- Phar::running — Devuelve la ruta completa en el disco o la URL phar completa del archivo phar actualmente ejecutado
- Phar::setAlias — Establece el alias del archivo Phar
- Phar::setDefaultStub — Utilizado para establecer el cargador PHP o el contenedor de carga de un archivo Phar como cargador por defecto
- Phar::setMetadata — Establece las metadatos del archivo phar
- Phar::setSignatureAlgorithm — Establece y aplica el algoritmo de firma de un phar
- Phar::setStub — Utilizado para especificar el cargador PHP o el contenedor de carga de un archivo Phar
- Phar::startBuffering — Inicia el almacenamiento en búfer de escrituras Phar, sin modificar el objeto Phar en el disco
- Phar::stopBuffering — Detiene el almacenamiento en búfer de las escrituras Phar y provoca la escritura en el disco
- Phar::unlinkArchive — Elimina completamente un archivo phar del disco y de la memoria
- Phar::webPhar — Redirige una solicitud desde un navegador web a un fichero interno en el archivo phar

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