Phar(PHP Archive)文件在PHP中類(lèi)似于JAR文件,是一種打包文件。Phar文件的結(jié)構(gòu)主要包括以下四個(gè)部分:
1. **Stub**:這是一個(gè)標(biāo)志,格式為`<?php __HALT_COMPILER(); ?>`。前面的內(nèi)容不限,但必須以`__HALT_COMPILER();`結(jié)尾,否則Phar擴(kuò)展將無(wú)法識(shí)別這個(gè)文件為Phar文件。
2. **Manifest**:描述文件內(nèi)容的清單。Phar文件本質(zhì)上是一種壓縮文件,其中每個(gè)被壓縮文件的權(quán)限、屬性等信息都放在這部分。這部分還會(huì)以序列化的形式存儲(chǔ)用戶(hù)自定義的meta-data。
3. **File Contents**:被壓縮文件的內(nèi)容。
4. **Signature**(可選):用于驗(yàn)證Phar文件完整性的簽名,放在文件末尾。
生成Phar文件的示例代碼如下:
```php
<?php
class TestObject { }
@unlink("phar.phar");
$phar = new Phar("phar.phar"); // 后綴名必須為phar
$phar->startBuffering();
$phar->setStub("<?php __HALT_COMPILER(); ?>"); // 設(shè)置stub
$o = new TestObject();
$phar->setMetadata($o); // 將自定義的meta-data存入manifest
$phar->addFromString("test.txt", "test"); // 添加要壓縮的文件
$phar->stopBuffering(); // 簽名自動(dòng)計(jì)算
?>
```