函式:PharData::buildFromIterator()
版本:PHP 5 >= 5.3.0, PHP 7, PHP 8
用法: PharData::buildFromIterator( Iterator $iterator [, string $base_directory ] ) : bool
該函式從一個可迭代物件中建立一個新的PharData物件,迭代物件必須返回一個或多個SplFileInfo物件,表示要新增到PharData物件中的檔案。
引數:
- $iterator: 必需,一個實現了Iterator介面的可迭代物件,必須返回SplFileInfo物件。
- $base_directory(可選): 基本目錄路徑,用於在PharData物件中建立檔案的相對路徑。
返回值: 如果成功建立了PharData物件,則返回true;否則返回false。
示例:
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/path/to/directory')
);
$phar = new PharData('/path/to/archive.tar');
$phar->buildFromIterator($files, '/path/to/directory');
// 新增檔案到壓縮包中
$phar->addFile('/path/to/file1.txt', 'file1.txt');
$phar->addFile('/path/to/file2.txt', 'file2.txt');
// 壓縮整個目錄到壓縮包中
$phar->buildFromIterator(
new DirectoryIterator('/path/to/directory'),
'/path/to/directory'
);
// 壓縮檔案到壓縮包中
$phar->buildFromIterator(
new ArrayIterator([
new SplFileInfo('/path/to/file1.txt'),
new SplFileInfo('/path/to/file2.txt'),
])
);
在上面的示例中,我們首先建立了一個可迭代物件$files,它包含了指定目錄下的所有檔案。然後,我們建立了一個名為archive.tar的PharData物件,並使用buildFromIterator()方法將$files中的所有檔案新增到壓縮包中。接下來,我們使用addFile()方法手動新增了一些其他檔案。最後,我們還展示了另外兩種使用buildFromIterator()方法的示例,分別是壓縮整個目錄和壓縮指定檔案列表。