PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 5.6.2
Defender Security – Malware Scanner, Login Security & Firewall v5.6.2
6.3.0 6.2.3 6.2.4 6.2.0 6.2.1 6.2.2 6.1.0 5.3.1 5.4.0 5.4.1 5.5.0 5.5.1 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.7.2 5.8.0 5.8.1 5.9.0 6.0.0 6.0.1 3.0.1 3.1.0 All 141 releases
defender-security / vendor / ramsey / uuid / src / Builder / FallbackBuilder.php

FallbackBuilder.php in Defender Security – Malware Scanner, Login Security & Firewall 5.6.2, at vendor/ramsey/uuid/src/Builder/FallbackBuilder.php

75 lines 1.9 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\Builder;
16
17 use Ramsey\Uuid\Codec\CodecInterface;
18 use Ramsey\Uuid\Exception\BuilderNotFoundException;
19 use Ramsey\Uuid\Exception\UnableToBuildUuidException;
20 use Ramsey\Uuid\UuidInterface;
21
22 /**
23 * FallbackBuilder builds a UUID by stepping through a list of UUID builders
24 * until a UUID can be constructed without exceptions
25 *
26 * @psalm-immutable
27 */
28 class FallbackBuilder implements UuidBuilderInterface
29 {
30 /**
31 * @var BuilderCollection
32 */
33 private $builders;
34
35 /**
36 * @param BuilderCollection $builders An array of UUID builders
37 */
38 public function __construct(BuilderCollection $builders)
39 {
40 $this->builders = $builders;
41 }
42
43 /**
44 * Builds and returns a UuidInterface instance using the first builder that
45 * succeeds
46 *
47 * @param CodecInterface $codec The codec to use for building this instance
48 * @param string $bytes The byte string from which to construct a UUID
49 *
50 * @return UuidInterface an instance of a UUID object
51 *
52 * @psalm-pure
53 */
54 public function build(CodecInterface $codec, string $bytes): UuidInterface
55 {
56 $lastBuilderException = null;
57
58 foreach ($this->builders as $builder) {
59 try {
60 return $builder->build($codec, $bytes);
61 } catch (UnableToBuildUuidException $exception) {
62 $lastBuilderException = $exception;
63
64 continue;
65 }
66 }
67
68 throw new BuilderNotFoundException(
69 'Could not find a suitable builder for the provided codec and fields',
70 0,
71 $lastBuilderException
72 );
73 }
74 }
75