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