PHP8 使用 Phar Archives:Phar 和 PharData 类

2024-02-19 15:45 更新

Phar 类支持读取和操作 的 Phar 存档,以及通过继承的功能进行迭代 RecursiveDirectoryIterator 类。通过对 ArrayAccess 接口的支持,可以像访问 Phar 存档中的文件一样访问它们 关联数组的一部分。

PharData 类扩展了 Phar,并且 允许创建和修改不可执行(数据)tar 和 zip 存档,即使 php.ini = 1。因此,PharData::setAlias() 和 PharData::setStub() 都被禁用,因为别名和存根的概念对于可执行文件 phar 是唯一的 档案。phar.readonly

需要注意的是,在创建 Phar 存档时,完整路径 应传递给 Phar 对象构造函数。 相对路径将无法初始化。

假设这是一个初始化的 Phar 对象,如下所示:$p

<?php
$p = new Phar('/path/to/myphar.phar', 0, 'myphar.phar');
?>

将在 中创建一个空的 Phar 存档 , 或者,如果已经存在,它将被打开 再。文本演示了别名的概念 可用于在 URL 中引用,如下所示:/path/to/myphar.phar/path/to/myphar.pharmyphar.phar/path/to/myphar.phar

<?php
// these two calls to file_get_contents() are equivalent if
// /path/to/myphar.phar has an explicit alias of "myphar.phar"
// in its manifest, or if the phar was initialized with the
// previous example's Phar object setup
$f = file_get_contents('phar:///path/to/myphar.phar/whatever.txt');
$f = file_get_contents('phar://myphar.phar/whatever.txt');
?>

使用新创建的 Phar 对象, 以下情况是可能的:$p

  • $a = $p['file.php'] 创建一个引用 phar://myphar.phar/file.php 内容的 PharFileInfo 类
  • $p['file.php'] = $v 创建一个新文件 (phar://myphar.phar/file.php),或覆盖 myphar.phar 中的现有文件。$v可以是字符串,也可以是打开的文件指针,在这种情况下,整个 该文件的内容将用于创建新文件。请注意,$p->addFromString('file.php', $v) 在功能上是 等同于上述内容。也可以添加文件的内容 使用 $p->addFile('/path/to/file.php', 'file.php')。 最后,可以使用 $p->addEmptyDir('empty') 创建一个空目录。
  • isset($p['file.php']) 可用于确定 phar://myphar.phar/file.php 是否存在于 myphar.phar 中。
  • unset($p['file.php']) 从 myphar.phar 中删除 phar://myphar.phar/file.php。

此外,Phar 对象是访问的唯一途径 特定于 Phar 的元数据,通过 Phar::getMetadata(), 以及通过 Phar::getStub() 和 Phar::setStub() 设置或检索 Phar 存档的 PHP 加载器存根的唯一方法。 此外,只能一次对整个 Phar 存档进行压缩 使用 Phar 类。

记录了 Phar 对象功能的完整列表 下面。

PharFileInfo 类扩展了 SplFileInfo 类,并添加了几种用于操作特定于文件的 Phar 详细信息的方法 包含在 Phar 中,例如操作压缩和元数据。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号