PHP8 使用 Phar Archives:Phar 和 PharData 類

2024-02-19 15:45 更新

Phar 類支持讀取和操作 的 Phar 存檔,以及通過繼承的功能進(jìn)行迭代 RecursiveDirectoryIterator 類。通過對 ArrayAccess 接口的支持,可以像訪問 Phar 存檔中的文件一樣訪問它們 關(guān)聯(lián)數(shù)組的一部分。

PharData 類擴(kuò)展了 Phar,并且 允許創(chuàng)建和修改不可執(zhí)行(數(shù)據(jù))tar 和 zip 存檔,即使 php.ini = 1。因此,PharData::setAlias() 和 PharData::setStub() 都被禁用,因?yàn)閯e名和存根的概念對于可執(zhí)行文件 phar 是唯一的 檔案。phar.readonly

需要注意的是,在創(chuàng)建 Phar 存檔時(shí),完整路徑 應(yīng)傳遞給 Phar 對象構(gòu)造函數(shù)。 相對路徑將無法初始化。

假設(shè)這是一個(gè)初始化的 Phar 對象,如下所示:$p

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

將在 中創(chuàng)建一個(gè)空的 Phar 存檔 , 或者,如果已經(jīng)存在,它將被打開 再。文本演示了別名的概念 可用于在 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');
?>

使用新創(chuàng)建的 Phar 對象, 以下情況是可能的:$p

  • $a = $p['file.php'] 創(chuàng)建一個(gè)引用 phar://myphar.phar/file.php 內(nèi)容的 PharFileInfo 類
  • $p['file.php'] = $v 創(chuàng)建一個(gè)新文件 (phar://myphar.phar/file.php),或覆蓋 myphar.phar 中的現(xiàn)有文件。$v可以是字符串,也可以是打開的文件指針,在這種情況下,整個(gè) 該文件的內(nèi)容將用于創(chuàng)建新文件。請注意,$p->addFromString('file.php', $v) 在功能上是 等同于上述內(nèi)容。也可以添加文件的內(nèi)容 使用 $p->addFile('/path/to/file.php', 'file.php')。 最后,可以使用 $p->addEmptyDir('empty') 創(chuàng)建一個(gè)空目錄。
  • isset($p['file.php']) 可用于確定 phar://myphar.phar/file.php 是否存在于 myphar.phar 中。
  • unset($p['file.php']) 從 myphar.phar 中刪除 phar://myphar.phar/file.php。

此外,Phar 對象是訪問的唯一途徑 特定于 Phar 的元數(shù)據(jù),通過 Phar::getMetadata(), 以及通過 Phar::getStub() 和 Phar::setStub() 設(shè)置或檢索 Phar 存檔的 PHP 加載器存根的唯一方法。 此外,只能一次對整個(gè) Phar 存檔進(jìn)行壓縮 使用 Phar 類。

記錄了 Phar 對象功能的完整列表 下面。

PharFileInfo 類擴(kuò)展了 SplFileInfo 類,并添加了幾種用于操作特定于文件的 Phar 詳細(xì)信息的方法 包含在 Phar 中,例如操作壓縮和元數(shù)據(jù)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號