PluginProbe ʕ •ᴥ•ʔ
ShareThis Dashboard for Google Analytics / 3.1.3
ShareThis Dashboard for Google Analytics v3.1.3
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 / Builder / FallbackBuilder.php
googleanalytics / lib / analytics-admin / vendor / ramsey / uuid / src / Builder Last commit date
BuilderCollection.php 3 years ago DefaultUuidBuilder.php 3 years ago DegradedUuidBuilder.php 3 years ago FallbackBuilder.php 3 years ago UuidBuilderInterface.php 3 years ago
FallbackBuilder.php
75 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\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