codecamp

PHP8 使用 Phar Archives:Phar 和 PharData 类

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 中,例如操作压缩和元数据。


PHP8 使用 Phar Archives:phar 流包装器
PHP8 创建 Phar 档案
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PHP8 语言参考

PHP8 函数参考

PHP8 影响 PHP 行为的扩展

PHP8 Componere

PHP8 安装/配置

PHP8 外部函数接口

PHP8 选项和信息

PHP8 选项/信息 函数

PHP8 Windows Cache for PHP

PHP8 WinCache 函数

PHP8 Yac

PHP8 身份认证服务

PHP8 Radius 函数

PHP8 压缩与归档扩展

PHP8 Phar

PHP8 Zip

PHP8 ZipArchive 类

PHP8 加密扩展

PHP8 OpenSSL

PHP8 OpenSSL 函数

PHP8 Sodium 函数

PHP8 数据库扩展

PHP8 针对各数据库系统对应的扩展

PHP8 CUBRID 函数

PHP8 Firebird/InterBase

PHP8 Firebird/InterBase函数

PHP8 MongoDB介绍驱动程序体系结构和特殊功能

PHP8 MongoDB\Driver\Command 类

PHP8 MongoDB\Driver\Query 类

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }