Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
/**
4
 * This file is part of the ramsey/uuid library
5
 *
6
 * For the full copyright and license information, please view the LICENSE
7
 * file that was distributed with this source code.
8
 *
9
 * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
10
 * @license http://opensource.org/licenses/MIT MIT
11
 */
12
 
13
declare(strict_types=1);
14
 
15
namespace Ramsey\Uuid\Fields;
16
 
17
use ValueError;
18
 
19
use function base64_decode;
20
use function sprintf;
21
use function strlen;
22
 
23
/**
24
 * Provides common serialization functionality to fields
25
 *
26
 * @psalm-immutable
27
 */
28
trait SerializableFieldsTrait
29
{
30
    /**
31
     * @param string $bytes The bytes that comprise the fields
32
     */
33
    abstract public function __construct(string $bytes);
34
 
35
    /**
36
     * Returns the bytes that comprise the fields
37
     */
38
    abstract public function getBytes(): string;
39
 
40
    /**
41
     * Returns a string representation of object
42
     */
43
    public function serialize(): string
44
    {
45
        return $this->getBytes();
46
    }
47
 
48
    /**
49
     * @return array{bytes: string}
50
     */
51
    public function __serialize(): array
52
    {
53
        return ['bytes' => $this->getBytes()];
54
    }
55
 
56
    /**
57
     * Constructs the object from a serialized string representation
58
     *
59
     * @param string $data The serialized string representation of the object
60
     *
61
     * @psalm-suppress UnusedMethodCall
62
     */
63
    public function unserialize(string $data): void
64
    {
65
        if (strlen($data) === 16) {
66
            $this->__construct($data);
67
        } else {
68
            $this->__construct(base64_decode($data));
69
        }
70
    }
71
 
72
    /**
73
     * @param array{bytes?: string} $data
74
     *
75
     * @psalm-suppress UnusedMethodCall
76
     */
77
    public function __unserialize(array $data): void
78
    {
79
        // @codeCoverageIgnoreStart
80
        if (!isset($data['bytes'])) {
81
            throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__));
82
        }
83
        // @codeCoverageIgnoreEnd
84
 
85
        $this->unserialize($data['bytes']);
86
    }
87
}