PluginProbe ʕ •ᴥ•ʔ
ShareThis Dashboard for Google Analytics / 3.0.0
ShareThis Dashboard for Google Analytics v3.0.0
3.3.2 trunk 1.0.7 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2.5 2.3.5 2.3.6 2.3.7 2.3.8 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 3.0.0 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.3.0 3.3.1
googleanalytics / lib / analytics-admin / vendor / ramsey / uuid / src / Fields / SerializableFieldsTrait.php
googleanalytics / lib / analytics-admin / vendor / ramsey / uuid / src / Fields Last commit date
FieldsInterface.php 3 years ago SerializableFieldsTrait.php 3 years ago
SerializableFieldsTrait.php
87 lines
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 $serialized The serialized string representation of the object
60 *
61 * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
62 * @psalm-suppress UnusedMethodCall
63 */
64 public function unserialize($serialized): void
65 {
66 if (strlen($serialized) === 16) {
67 $this->__construct($serialized);
68 } else {
69 $this->__construct(base64_decode($serialized));
70 }
71 }
72
73 /**
74 * @param array{bytes: string} $data
75 */
76 public function __unserialize(array $data): void
77 {
78 // @codeCoverageIgnoreStart
79 if (!isset($data['bytes'])) {
80 throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__));
81 }
82 // @codeCoverageIgnoreEnd
83
84 $this->unserialize($data['bytes']);
85 }
86 }
87