GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Pull Request — master (#225)
by joseph
18:50
created

LocaleIdentifierFakerData::getLocales()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 5
c 1
b 0
f 0
nc 3
nop 0
dl 0
loc 11
ccs 0
cts 9
cp 0
crap 12
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace EdmondsCommerce\DoctrineStaticMeta\Entity\Fields\FakerData\String;
6
7
use EdmondsCommerce\DoctrineStaticMeta\Entity\Fields\FakerData\AbstractFakerDataProvider;
8
use Faker\Generator;
9
use RuntimeException;
10
use Symfony\Component\Intl\Intl;
11
use Symfony\Component\Intl\Locales;
12
13
use function array_flip;
14
use function class_exists;
15
16
class LocaleIdentifierFakerData extends AbstractFakerDataProvider
17
{
18
19
    /**
20
     * @var string[]
21
     */
22
    private static $locales;
23
24
    /**
25
     * LocaleIdentifierFakerDataProvider constructor.
26
     *
27
     * @param Generator $generator
28
     */
29
    public function __construct(Generator $generator)
30
    {
31
        parent::__construct($generator);
32
        if (null === self::$locales) {
0 ignored issues
show
introduced by
The condition null === self::locales is always false.
Loading history...
33
            self::$locales = $this->getLocales();
34
        }
35
    }
36
37
    /**
38
     * Symfony 4.3 deprecated the Intl::getLocaleBundle in favour of the new Locales class. We need to support both the
39
     * older projects that are using symfony 4.0 - 2 as well as newer versions so we will use the method to try and get
40
     * the locales the new way if possible, and then fall back to the older way if not
41
     *
42
     * @return array
43
     * @SuppressWarnings(PHPMD.StaticAccess)
44
     */
45
    private function getLocales(): array
46
    {
47
        if (class_exists(Locales::class)) {
48
            return array_flip(Locales::getLocales());
0 ignored issues
show
Bug Best Practice introduced by
The expression return array_flip(Symfon...\Locales::getLocales()) could return the type null which is incompatible with the type-hinted return array. Consider adding an additional type-check to rule them out.
Loading history...
49
        }
50
51
        if (class_exists(Intl::class)) {
52
            return Intl::getLocaleBundle()->getLocales();
0 ignored issues
show
Deprecated Code introduced by
The function Symfony\Component\Intl\Intl::getLocaleBundle() has been deprecated: since Symfony 4.3, to be removed in 5.0. Use {@see Locales} instead. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

52
            return /** @scrutinizer ignore-deprecated */ Intl::getLocaleBundle()->getLocales();

This function has been deprecated. The supplier of the function has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.

Loading history...
53
        }
54
55
        throw new RuntimeException('No locale provider exists');
56
    }
57
58
    public function __invoke(): string
59
    {
60
        do {
61
            $value = $this->generator->locale;
62
        } while (false === $this->isValid($value));
63
64
        return $value;
65
    }
66
67
    private function isValid(string $value): bool
68
    {
69
        if (!isset(self::$locales[$value])) {
70
            return false;
71
        }
72
73
        return true;
74
    }
75
}
76