Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
Language
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
3 / 3
3
100.00% covered (success)
100.00%
1 / 1
 requiresActive
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getData
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getOptions
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2namespace Apie\IanaValueObjects\LanguageTag;
3
4use Apie\Core\Attributes\ExampleValue;
5use Apie\Core\Lists\StringSet;
6use Apie\Core\ValueObjects\Interfaces\LimitedOptionsInterface;
7use Apie\Core\ValueObjects\Interfaces\StringValueObjectInterface;
8
9/**
10 * All languages registered in the IANA Language Subtag Registry.
11 *
12 * This one only contains the main languages, so no subtags like "en-US" or "zh-yue" are included.
13 * For those, use the LanguageSubtag value object.
14 *
15 * @see https://www.iana.org/assignments/language-subtag-registry
16 *
17 * Any language that is not active anymore can be used as well (for data integrity).
18 */
19#[ExampleValue('nl')]
20#[ExampleValue('en')]
21final class Language implements StringValueObjectInterface, LimitedOptionsInterface
22{
23    use IsLanguageSubtag;
24
25    protected static function requiresActive(): bool
26    {
27        return false;
28    }
29
30    protected static function getData(): array
31    {
32        return require __DIR__ . '/../../fixtures/languages.php';
33    }
34
35    public static function getOptions(): StringSet
36    {
37        return new StringSet(array_keys(static::getData()));
38    }
39}