Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace ZipStream;
6
 
7
/**
8
 * @internal
9
 */
10
abstract class EndOfCentralDirectory
11
{
12
    private const SIGNATURE = 0x06054b50;
13
 
14
    public static function generate(
15
        int $numberOfThisDisk,
16
        int $numberOfTheDiskWithCentralDirectoryStart,
17
        int $numberOfCentralDirectoryEntriesOnThisDisk,
18
        int $numberOfCentralDirectoryEntries,
19
        int $sizeOfCentralDirectory,
20
        int $centralDirectoryStartOffsetOnDisk,
21
        string $zipFileComment,
22
    ): string {
23
        /** @psalm-suppress MixedArgument */
24
        return PackField::pack(
25
            new PackField(format: 'V', value: static::SIGNATURE),
26
            new PackField(format: 'v', value: $numberOfThisDisk),
27
            new PackField(format: 'v', value: $numberOfTheDiskWithCentralDirectoryStart),
28
            new PackField(format: 'v', value: $numberOfCentralDirectoryEntriesOnThisDisk),
29
            new PackField(format: 'v', value: $numberOfCentralDirectoryEntries),
30
            new PackField(format: 'V', value: $sizeOfCentralDirectory),
31
            new PackField(format: 'V', value: $centralDirectoryStartOffsetOnDisk),
32
            new PackField(format: 'v', value: strlen($zipFileComment)),
33
        ) . $zipFileComment;
34
    }
35
}