EndOfCentralDirectoryLocator.php 809 B

1234567891011121314151617181920212223242526272829
  1. <?php
  2. declare(strict_types=1);
  3. namespace ZipStream\Zip64;
  4. use ZipStream\PackField;
  5. /**
  6. * @internal
  7. */
  8. abstract class EndOfCentralDirectoryLocator
  9. {
  10. private const SIGNATURE = 0x07064b50;
  11. public static function generate(
  12. int $numberOfTheDiskWithZip64CentralDirectoryStart,
  13. int $zip64centralDirectoryStartOffsetOnDisk,
  14. int $totalNumberOfDisks,
  15. ): string {
  16. /** @psalm-suppress MixedArgument */
  17. return PackField::pack(
  18. new PackField(format: 'V', value: static::SIGNATURE),
  19. new PackField(format: 'V', value: $numberOfTheDiskWithZip64CentralDirectoryStart),
  20. new PackField(format: 'P', value: $zip64centralDirectoryStartOffsetOnDisk),
  21. new PackField(format: 'V', value: $totalNumberOfDisks),
  22. );
  23. }
  24. }