在PHP中,PharData類提供了一個(gè)高級(jí)接口,用于訪問和創(chuàng)建不可執(zhí)行的tar和zip壓縮文件,這些歸檔文件不包含存根信息,因此Phar擴(kuò)展也無法執(zhí)行它們。即使在php.ini中將phar.readonly設(shè)置為1,仍然可以使用PharData類來創(chuàng)建、操作和處理普通的zip和tar文件。
通過PharData類,用戶可以方便地進(jìn)行文件的添加、刪除、提取和修改等操作,以及執(zhí)行其他定制化的操作,如加密保護(hù)或簽名驗(yàn)證。PharData類為您提供了更靈活的方式來處理壓縮文件,方便地與PHP應(yīng)用程序進(jìn)行集成和處理。
一、PharData類摘要
class PharData 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; /* 方法 */ public __construct( string $filename, int $flags = FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS, ?string $alias = null, int $format = 0 ) public addEmptyDir(string $directory): void public addFile(string $filename, ?string $localName = null): void public addFromString(string $localName, string $contents): void public buildFromDirectory(string $directory, string $pattern = ""): array public buildFromIterator(Traversable $iterator, ?string $baseDirectory = null): array public compress(int $compression, ?string $extension = null): ?PharData 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 decompress(?string $extension = null): ?PharData 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 isWritable(): bool public offsetSet(string $localName, resource|string $value): void public offsetUnset(string $localName): void 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(string $stub, int $len = -1): bool 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 }
二、PharData函數(shù)
1、PharData::addEmptyDir — 將一個(gè)空目錄添加到 tar/zip 存檔中。
2、PharData::addFile — 將文件系統(tǒng)中的文件添加到 tar/zip 存檔中。
3、PharData::addFromString — 將字符串中的文件添加到 tar/zip 存檔中。
4、PharData::buildFromDirectory — 從目錄中的文件構(gòu)建一個(gè) tar/zip 存檔。
5、PharData::buildFromIterator — 從迭代器構(gòu)造 tar 或 zip 存檔。
6、PharData::compress — 使用 Gzip 或 Bzip2 壓縮壓縮整個(gè) tar/zip 壓縮文件。
7、PharData::compressFiles — 壓縮當(dāng)前 tar/zip 存檔中的所有文件。
8、PharData::__construct — 構(gòu)造一個(gè)不可執(zhí)行的 tar 或 zip 存檔對(duì)象。
9、PharData::convertToData — 將 phar 存檔轉(zhuǎn)換為不可執(zhí)行的 tar 或 zip 文件。
10、PharData::convertToExecutable — 將不可執(zhí)行的 tar/zip 存檔轉(zhuǎn)換為可執(zhí)行的 phar 存檔。
11、PharData::copy — 將 phar 存檔內(nèi)部的文件復(fù)制到 phar 中的另一個(gè)新文件。
12、PharData::decompress — 解壓縮整個(gè) Phar 存檔。
13、PharData::decompressFiles — 解壓縮當(dāng)前 zip 存檔中的所有文件。
14、PharData::delMetadata — 刪除 zip 存檔的全局元數(shù)據(jù)。
15、PharData::delete — 刪除 tar/zip 存檔中的文件。
16、PharData::__destruct — 銷毀不可執(zhí)行的 tar 或 zip 存檔對(duì)象。
17、PharData::extractTo — 將 tar/zip 存檔的內(nèi)容解壓到目錄中。
18、PharData::isWritable — 如果可以修改 tar/zip 存檔,則返回 true。
19、PharData::offsetSet — 將 tar/zip 中文件的內(nèi)容設(shè)置為外部文件或字符串的內(nèi)容。
20、PharData::offsetUnset — 從 tar/zip 存檔中刪除文件。
21、PharData::setAlias — 虛擬函數(shù)(Phar::setAlias 對(duì) PharData 無效)。
22、PharData::setDefaultStub — 虛擬函數(shù)(Phar::setDefaultStub 對(duì) PharData 無效)。
23、PharData::setMetadata — 設(shè)置 phar 存檔元數(shù)據(jù)。
24、PharData::setSignatureAlgorithm — 設(shè)置 phar 的簽名算法并應(yīng)用它。
25、PharData::setStub — 虛擬函數(shù)(Phar::setStub 對(duì) PharData 無效)。