Phar類是PHP提供的一個(gè)高級(jí)接口,用于訪問(wèn)和創(chuàng)建Phar存檔,可以輕松地操作和管理Phar存檔文件,包括添加、刪除、提取和修改其中的文件內(nèi)容。Phar類還提供了一些方便的方法,用于處理存檔中的文件和目錄,以及執(zhí)行自定義的操作,如簽名驗(yàn)證和加密保護(hù)。
一、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 __construct(string $filename, int $flags = FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS, ?string $alias = null) public addEmptyDir(string $directory): void public addFile(string $filename, ?string $localName = null): void public addFromString(string $localName, string $contents): void final public static apiVersion(): string public buildFromDirectory(string $directory, string $pattern = ""): array public buildFromIterator(Traversable $iterator, ?string $baseDirectory = null): array final public static canCompress(int $compression = 0): bool final public static canWrite(): bool public compress(int $compression, ?string $extension = null): ?Phar public compressFiles(int $compression): void public convertToData(?int $format = null, ?int $compression = null, ?string $extension = null): ?PharData public convertToExecutable(?int $format = null, ?int $compression = null, ?string $extension = null): ?Phar public copy(string $from, string $to): bool public count(int $mode = COUNT_NORMAL): int final public static createDefaultStub(?string $index = null, ?string $webIndex = null): string public decompress(?string $extension = null): ?Phar public decompressFiles(): bool public delMetadata(): bool public delete(string $localName): bool public extractTo(string $directory, array|string|null $files = null, bool $overwrite = false): bool public getAlias(): ?string public getMetadata(array $unserializeOptions = []): mixed public getModified(): bool public getPath(): string public getSignature(): array|false public getStub(): string final public static getSupportedCompression(): array final public static getSupportedSignatures(): array public getVersion(): string public hasMetadata(): bool final public static interceptFileFuncs(): void public isBuffering(): bool public isCompressed(): int|false public isFileFormat(int $format): bool final public static isValidPharFilename(string $filename, bool $executable = true): bool public isWritable(): bool final public static loadPhar(string $filename, ?string $alias = null): bool final public static mapPhar(?string $alias = null, int $offset = 0): bool final public static mount(string $pharPath, string $externalPath): void final public static mungServer(array $variables): void public offsetExists(string $localName): bool public offsetGet(string $localName): SplFileInfo public offsetSet(string $localName, resource|string $value): void public offsetUnset(string $localName): void final public static running(bool $returnPhar = true): string public setAlias(string $alias): bool public setDefaultStub(?string $index = null, ?string $webIndex = null): bool public setMetadata(mixed $metadata): void public setSignatureAlgorithm(int $algo, ?string $privateKey = null): void public setStub(resource|string $stub, int $length = -1): bool public startBuffering(): void public stopBuffering(): void final public static unlinkArchive(string $filename): bool final public static webPhar( ?string $alias = null, ?string $index = null, ?string $fileNotFoundScript = null, array $mimeTypes = [], ?callable $rewrite = null ): void public __destruct() /* 繼承的方法 */ public RecursiveDirectoryIterator::getChildren(): RecursiveDirectoryIterator public RecursiveDirectoryIterator::getSubPath(): string public RecursiveDirectoryIterator::getSubPathname(): string public RecursiveDirectoryIterator::hasChildren(bool $allowLinks = false): bool public RecursiveDirectoryIterator::key(): string public RecursiveDirectoryIterator::next(): void public RecursiveDirectoryIterator::rewind(): void public FilesystemIterator::current(): string|SplFileInfo|FilesystemIterator public FilesystemIterator::getFlags(): int public FilesystemIterator::key(): string public FilesystemIterator::next(): void public FilesystemIterator::rewind(): void public FilesystemIterator::setFlags(int $flags): void public DirectoryIterator::current(): mixed public DirectoryIterator::getBasename(string $suffix = ""): string public DirectoryIterator::getExtension(): string public DirectoryIterator::getFilename(): string public DirectoryIterator::isDot(): bool public DirectoryIterator::key(): mixed public DirectoryIterator::next(): void public DirectoryIterator::rewind(): void public DirectoryIterator::seek(int $offset): void public DirectoryIterator::__toString(): string public DirectoryIterator::valid(): bool public SplFileInfo::getATime(): int|false public SplFileInfo::getBasename(string $suffix = ""): string public SplFileInfo::getCTime(): int|false public SplFileInfo::getExtension(): string public SplFileInfo::getFileInfo(?string $class = null): SplFileInfo public SplFileInfo::getFilename(): string public SplFileInfo::getGroup(): int|false public SplFileInfo::getInode(): int|false public SplFileInfo::getLinkTarget(): string|false public SplFileInfo::getMTime(): int|false public SplFileInfo::getOwner(): int|false public SplFileInfo::getPath(): string public SplFileInfo::getPathInfo(?string $class = null): ?SplFileInfo public SplFileInfo::getPathname(): string public SplFileInfo::getPerms(): int|false public SplFileInfo::getRealPath(): string|false public SplFileInfo::getSize(): int|false public SplFileInfo::getType(): string|false public SplFileInfo::isDir(): bool public SplFileInfo::isExecutable(): bool public SplFileInfo::isFile(): bool public SplFileInfo::isLink(): bool public SplFileInfo::isReadable(): bool public SplFileInfo::isWritable(): bool public SplFileInfo::openFile(string $mode = "r", bool $useIncludePath = false, ?resource $context = null): SplFileObject public SplFileInfo::setFileClass(string $class = SplFileObject::class): void public SplFileInfo::setInfoClass(string $class = SplFileInfo::class): void public SplFileInfo::__toString(): string }
二、Phar函數(shù)
1、Phar::addEmptyDir — 添加一個(gè)空目錄到 phar 檔案。
2、Phar::addFile — 將一個(gè)文件從文件系統(tǒng)添加到 phar 檔案中。
3、Phar::addFromString — 以字符串的形式添加一個(gè)文件到 phar 檔案。
4、Phar::apiVersion — 返回 api 版本。
5、Phar::buildFromDirectory — 從目錄中的文件構(gòu)建 phar 存檔。
6、Phar::buildFromIterator — 從迭代器構(gòu)造 phar 存檔。
7、Phar::canCompress — 返回 phar 擴(kuò)展是否支持使用 zlib 或 bzip2 進(jìn)行壓縮。
8、Phar::canWrite — 返回 phar 擴(kuò)展是否支持寫入和創(chuàng)建 phar。
9、Phar::compress — 使用 Gzip 或 Bzip2 壓縮整個(gè) Phar 存檔。
10、Phar::compressFiles — 壓縮當(dāng)前 Phar 存檔中的所有文件。
11、Phar::__construct — 構(gòu)造一個(gè) Phar 存檔對(duì)象。
12、Phar::convertToData — 將 phar 存檔轉(zhuǎn)換為不可執(zhí)行的 tar 或 zip 文件。
13、Phar::convertToExecutable — 將 phar 存檔轉(zhuǎn)換為另一種可執(zhí)行的 phar 存檔文件格式。
14、Phar::copy — 將 phar 存檔內(nèi)部的文件復(fù)制到 phar 中的另一個(gè)新文件。
15、Phar::count — 返回 Phar 存檔中的條目(文件)數(shù)。
16、Phar::createDefaultStub — 創(chuàng)建特定于 phar 文件格式的存根。
17、Phar::d ecompress — 解壓縮整個(gè) Phar 存檔。
18、Phar::d ecompressFiles — 解壓縮當(dāng)前 Phar 存檔中的所有文件。
19、Phar::d elMetadata — 刪除 phar 的全局元數(shù)據(jù)。
20、Phar::delete — 刪除 phar 檔案中的一個(gè)文件。
21、Phar::__destruct — 破壞 Phar 存檔對(duì)象。
22、Phar::extractTo — 將 phar 存檔的內(nèi)容解壓到目錄中。
23、Phar::getAlias — 獲取 Phar 的別名。
24、Phar::getMetadata — 返回 phar 存檔元數(shù)據(jù)。
25、Phar::getModified — 返回 phar 是否被修改。
26、Phar::getPath — 獲取磁盤上 Phar 存檔的真實(shí)路徑。
27、Phar::getSignature — 返回 Phar 存檔的 MD5/SHA1/SHA256/SHA512/OpenSSL 簽名。
28、Phar::getStub — 返回 Phar 存檔的 PHP 加載器或引導(dǎo)存根。
29、Phar::getSupportedCompression — 返回支持的壓縮算法數(shù)組。
30、Phar::getSupportedSignatures — 返回支持的簽名類型的數(shù)組。
31、Phar::getVersion — 返回 Phar 存檔的版本信息。
32、Phar::hasMetadata — 返回 phar 是否具有全局元數(shù)據(jù)。
33、Phar::interceptFileFuncs — 指示 phar 攔截 fopen、file_get_contents、opendir 和所有與 stat 相關(guān)的函數(shù)。
24、Phar::isBuffering — 用于確定 Phar 寫入操作是被緩沖,還是直接刷新到磁盤。
35、Phar::isCompressed — 如果壓縮了整個(gè) phar 存檔(.tar.gz/tar.bz 等),則返回 Phar::GZ 或 PHAR::BZ2。
36、Phar::isFileFormat — 如果 phar 存檔基于 tar/phar/zip 文件格式,則返回 true,具體取決于參數(shù)。
37、Phar::isValidPharFilename — 返回給定的文件名是否為有效的 phar 文件名。
38、Phar::isWritable — 如果可以修改 phar 存檔,則返回 true。
39、Phar::loadPhar — 加載任何帶有別名的 phar 存檔。
40、Phar::mapPhar — 讀取當(dāng)前執(zhí)行的文件(一個(gè) phar)并注冊(cè)其清單。
41、Phar::mount — 將外部路徑或文件掛載到 phar 存檔中的虛擬位置。
42、Phar::mungServer — 定義最多 4 個(gè) $_SERVER 變量的列表,這些變量應(yīng)修改以執(zhí)行。
43、Phar::offsetExists — 確定 phar 中是否存在文件。
44、Phar::offsetGet — 獲取特定文件的 PharFileInfo 對(duì)象。
45、Phar::offsetSet — 將內(nèi)部文件的內(nèi)容設(shè)置為外部文件的內(nèi)容。
46、Phar::offsetUnset — 從 phar 中刪除文件。
47、Phar::running — 返回磁盤上的完整路徑或當(dāng)前正在執(zhí)行的 Phar 存檔的完整 phar URL。
48、Phar::setAlias — 設(shè)置 Phar 存檔的別名。
49、Phar::setDefaultStub — 用于將 Phar 存檔的 PHP 加載器或引導(dǎo)存根設(shè)置為默認(rèn)加載器。
50、Phar::setMetadata — 設(shè)置 phar 存檔元數(shù)據(jù)。
51、Phar::setSignatureAlgorithm — 設(shè)置 phar 的簽名算法并應(yīng)用它。
52、Phar::setStub — 用于設(shè)置 Phar 存檔的 PHP 加載器或引導(dǎo)存根。
53、Phar::startBuffering — 開始緩沖 Phar 寫入操作,不要修改磁盤上的 Phar 對(duì)象。
54、Phar::stopBuffering — 停止緩沖對(duì) Phar 存檔的寫入請(qǐng)求,并將更改保存到磁盤。
55、Phar::unlinkArchive — 從磁盤和內(nèi)存中完全刪除 phar 存檔。
56、Phar::webPhar — 將來(lái)自 Web 瀏覽器的請(qǐng)求路由到 phar 存檔中的內(nèi)部文件。