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
39:33
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 class_exists;
14
15
class LocaleIdentifierFakerData extends AbstractFakerDataProvider
16
{
17
18
    /**
19
     * @var string[]
20
     */
21
    private static $locales;
22
23
    /**
24
     * LocaleIdentifierFakerDataProvider constructor.
25
     *
26
     * @param Generator $generator
27
     */
28
    public function __construct(Generator $generator)
29
    {
30
        parent::__construct($generator);
31
        if (null === self::$locales) {
0 ignored issues
show
introduced by
The condition null === self::locales is always false.
Loading history...
32
            self::$locales = $this->getLocales();
33
        }
34
    }
35
36
    /**
37
     * Symfony 4.3 deprecated the Intl::getLocaleBundle in favour of the new Locales class. We need to support both the
38
     * older projects that are using symfony 4.0 - 2 as well as newer versions so we will use the method to try and get
39
     * the locales the new way if possible, and then fall back to the older way if not
40
     *
41
     * @return array
42
     * @SuppressWarnings(PHPMD.StaticAccess)
43
     */
44
    private function getLocales(): array
45
    {
46
        if (class_exists(Locales::class)) {
47
            return Locales::getLocales();
48
        }
49
50
        if (class_exists(Intl::class)) {
51
            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

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