# 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 | Zip アーカイブの Unix タイムスタンプ拡張のサポートが追加されました。
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 アーカイブ形式に変換する
- 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 — Phar アーカイブの MD5/SHA1/SHA256/SHA512/OpenSSL シグネチャを返す
- Phar::getStub — Phar アーカイブの PHP ローダーあるいは起動スタブを返す
- Phar::getSupportedCompression — サポートする圧縮アルゴリズムの配列を返す
- Phar::getSupportedSignatures — サポートするシグネチャ型の配列を返す
- Phar::getVersion — Phar アーカイブのバージョン情報を返す
- Phar::hasMetadata — ファイルがグローバルなメタデータを持つかどうかを返す
- Phar::interceptFileFuncs — fopen、file_get_contents、opendir などの stat 関連の関数をすべて phar に横取りさせる
- Phar::isBuffering — Phar の書き込み操作がバッファリングされるか、あるいは直接ディスクに書き込まれるかを調べる
- Phar::isCompressed — phar アーカイブ全体が (.tar.gz/tar.bz などで) 圧縮されている場合に Phar::GZ あるいは PHAR::BZ2 を返す
- Phar::isFileFormat — phar アーカイブが、パラメータで指定した tar/phar/zip のいずれかの形式である場合に true を返す
- Phar::isValidPharFilename — 指定したファイル名が正しい形式の phar ファイルかどうかを返す
- Phar::isWritable — phar アーカイブが変更可能な場合に true を返す
- Phar::loadPhar — 任意の phar アーカイブを、エイリアスを指定して読み込む
- Phar::mapPhar — 現在実行されている (phar 形式の) ファイルを読み込み、その内容を登録する
- Phar::mount — 外部のパスあるいはファイルを phar アーカイブ内に仮想的にマウントする
- Phar::mungServer — 最大 4 つまでの $_SERVER 変数を実行時に変更させる
- Phar::offsetExists — ファイルが phar 内に存在するかどうかを調べる
- Phar::offsetGet — 指定したファイルの PharFileInfo オブジェクトを取得する
- Phar::offsetSet — 内部ファイルに、外部ファイルの内容を設定する
- Phar::offsetUnset — ファイルを phar から削除する
- Phar::running — 現在実行中の Phar アーカイブのフルパスあるいは完全な phar URL を返す
- Phar::setAlias — Phar アーカイブのエイリアスを設定する
- Phar::setDefaultStub — Phar アーカイブの PHP ローダー (起動スタブ) をデフォルトのローダーに設定する
- Phar::setMetadata — phar アーカイブのメタデータを設定する
- Phar::setSignatureAlgorithm — phar のシグネチャのアルゴリズムを設定して適用する
- Phar::setStub — Phar アーカイブの PHP ローダ (あるいは起動スタブ) を設定する
- Phar::startBuffering — Phar の書き込み操作のバッファリングを開始するが、ディスク上の Phar オブジェクトは変更しない
- Phar::stopBuffering — Phar アーカイブへの書き込みリクエストのバッファリングを終了し、変更内容をディスクに書き込む
- Phar::unlinkArchive — phar アーカイブをディスクとメモリから完全に削除する
- Phar::webPhar — ブラウザからのリクエストを、phar アーカイブ内部のファイルに転送する

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