36 lines
1.2 KiB
PHP
36 lines
1.2 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace ZipStream;
|
||
|
|
||
|
/**
|
||
|
* @internal
|
||
|
*/
|
||
|
abstract class EndOfCentralDirectory
|
||
|
{
|
||
|
private const SIGNATURE = 0x06054b50;
|
||
|
|
||
|
public static function generate(
|
||
|
int $numberOfThisDisk,
|
||
|
int $numberOfTheDiskWithCentralDirectoryStart,
|
||
|
int $numberOfCentralDirectoryEntriesOnThisDisk,
|
||
|
int $numberOfCentralDirectoryEntries,
|
||
|
int $sizeOfCentralDirectory,
|
||
|
int $centralDirectoryStartOffsetOnDisk,
|
||
|
string $zipFileComment,
|
||
|
): string {
|
||
|
/** @psalm-suppress MixedArgument */
|
||
|
return PackField::pack(
|
||
|
new PackField(format: 'V', value: static::SIGNATURE),
|
||
|
new PackField(format: 'v', value: $numberOfThisDisk),
|
||
|
new PackField(format: 'v', value: $numberOfTheDiskWithCentralDirectoryStart),
|
||
|
new PackField(format: 'v', value: $numberOfCentralDirectoryEntriesOnThisDisk),
|
||
|
new PackField(format: 'v', value: $numberOfCentralDirectoryEntries),
|
||
|
new PackField(format: 'V', value: $sizeOfCentralDirectory),
|
||
|
new PackField(format: 'V', value: $centralDirectoryStartOffsetOnDisk),
|
||
|
new PackField(format: 'v', value: strlen($zipFileComment)),
|
||
|
) . $zipFileComment;
|
||
|
}
|
||
|
}
|