PluginProbe
WCPOS – Point of Sale (POS) plugin for WooCommerce / 1.10.20
WCPOS – Point of Sale (POS) plugin for WooCommerce v1.10.20
1.10.20 1.10.19 1.10.18 1.10.17 1.10.16 1.10.15 1.10.13 1.10.14 1.10.12 1.10.11 1.10.10 1.10.9 1.10.8 untagged-3d9b7ccddc54df87c672 1.10.7 1.10.6 1.10.5 1.10.3 1.10.4 1.10.2 1.10.1 1.10.0 1.9.17 1.9.15 1.9.16 All 164 releases
woocommerce-pos / vendor / ramsey / uuid / src / Codec / GuidStringCodec.php

GuidStringCodec.php in WCPOS – Point of Sale (POS) plugin for WooCommerce 1.10.20, at vendor/ramsey/uuid/src/Codec/GuidStringCodec.php

56 lines 1.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 <[email protected]>
10 * @license http://opensource.org/licenses/MIT MIT
11 */
12
13 declare(strict_types=1);
14
15 namespace Ramsey\Uuid\Codec;
16
17 use Ramsey\Uuid\Guid\Guid;
18 use Ramsey\Uuid\UuidInterface;
19
20 use function bin2hex;
21 use function substr;
22
23 /**
24 * GuidStringCodec encodes and decodes globally unique identifiers (GUID)
25 *
26 * @see Guid
27 *
28 * @psalm-immutable
29 */
30 class GuidStringCodec extends StringCodec
31 {
32 public function decode(string $encodedUuid): UuidInterface
33 {
34 $bytes = $this->getBytes($encodedUuid);
35
36 return $this->getBuilder()->build($this, $this->swapBytes($bytes));
37 }
38
39 public function decodeBytes(string $bytes): UuidInterface
40 {
41 // Specifically call parent::decode to preserve correct byte order
42 return parent::decode(bin2hex($bytes));
43 }
44
45 /**
46 * Swaps bytes according to the GUID rules
47 */
48 private function swapBytes(string $bytes): string
49 {
50 return $bytes[3] . $bytes[2] . $bytes[1] . $bytes[0]
51 . $bytes[5] . $bytes[4]
52 . $bytes[7] . $bytes[6]
53 . substr($bytes, 8);
54 }
55 }
56