文档地址:https://www.php.net/manual/zh/class.rararchive.php
### 代码
```
final class RarArchive implements Traversable {
/* 方法 */
public close(): bool // 关闭RAR存档并释放所有资源
public getComment(): string // 从RAR存档中获取注释文本
public getEntries(): array|false // 从RAR归档中获取条目的完整列表
public getEntry(string $entryname): RarEntry|false //从RAR归档中获取条目对象
public isBroken(): bool // 测试存档是否已损坏(不完整)
public isSolid(): bool //检查RAR归档是否可靠
public static open(string $filename, string $password = NULL, callable $volume_callback = NULL): RarArchive|false // 打开RAR存档
public setAllowBroken(bool $allow_broken): bool //是否允许打开损坏的存档
public __toString(): string // 获取文本表示
}
```
### 说明
RARArchive类目前需要安装才能使用
下载并安装PHP RAR扩展php_rar才可以用。
PHP RarArchive类只支持rar压缩文件的读取和解压,不支持添加文件。
也就是说不能用PHP RarArchive来实现文件压缩。想要用PHP生成压缩文件来打包目录,可以使用ZipArchive类,支持压缩和解压文件,ZipArchive是PHP内置的,不需要安装,还可以结合bzip2和ZipArchive实现更高压缩级别的压缩。
**注意:检查是否安装rar扩展,否则是没有效果的**
*![](https://img.kancloud.cn/20/da/20da7ad5b74ecb5a755c7019cfb30a77_1362x274.png)*
#### 测试 使用foreach遍历
~~~
<?php
$rar_arch = RarArchive::open('test.rar');
if ($rar_arch === false) die("文件不存在或者路径不正确");
foreach ($rar_arch as $key=>$vel)
{
echo $key."=====".$vel."<br>";
}
$rar_arch->close();
?>
~~~
// 结果
![](https://img.kancloud.cn/92/a7/92a77c8171025ba49cb758c25b3adc24_494x81.png)
- 空白目录
- iterable接口
- 接口Traversable继承Iterator接口
- 类 RarArchive 继承Traversable接口
- 类SimpleXMLElement继承Traversable接口
- 类SimpleXMLIterator 继承SimpleXMLElement类
- 类IntlRuleBasedBreakIterator实现Traversable接口
- 类IntlCodePointBreakIterator实现Traversable接口
- 类DocResult 实现BaseResult和Traversable
- 类Result 实现\BaseResult和Traversable
- 类RowResult实现\BaseResult 和Traversable
- 类SqlStatementResult 实现BaseResult 和Traversable
- 接口IteratorAggregate 继承Traversable
- 类DOMNodeList 实现IteratorAggregate, Countable
- 类DOMNamedNodeMap 实现IteratorAggregate, Countable