Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
CRAP | |
100.00% |
1 / 1 |
Mapping | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
__construct | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 |
1 | <?php |
2 | |
3 | declare(strict_types=1); |
4 | |
5 | namespace PeServer\Core\Serialization; |
6 | |
7 | use Attribute; |
8 | use PeServer\Core\Serialization\Converter\TypeConverterBase; |
9 | use PeServer\Core\Text; |
10 | |
11 | /** |
12 | * マッピング設定。 |
13 | * |
14 | * * ここに設定が集約される |
15 | * * `self::FLAG_IGNORE` が設定されていない限り処理される |
16 | */ |
17 | #[Attribute(Attribute::TARGET_PROPERTY)] |
18 | readonly class Mapping |
19 | { |
20 | #region define |
21 | |
22 | /** 無視する。 */ |
23 | public const FLAG_IGNORE = 0b11111111; |
24 | /** 通常。 */ |
25 | public const FLAG_NONE = 0b00000000; |
26 | /** キーがない場合に例外を投げる(指定しない場合は無視される)。 */ |
27 | public const FLAG_EXCEPTION_NOT_FOUND_KEY = 0b00000001; |
28 | /** 設定値の型が合わない場合に例外を投げる(指定しない場合は型変換を行い、それでも無理なら無視されるが `settype` がクッソ頑張ってる)。 */ |
29 | public const FLAG_EXCEPTION_TYPE_MISMATCH = 0b00000010; |
30 | /** オブジェクトの場合に生成しない(指定しない場合は `null` だったら生成する)。 */ |
31 | public const FLAG_OBJECT_INSTANCE_ONLY = 0b00000100; |
32 | /** 配列内オブジェクトを生成する際にキーを無視するか */ |
33 | public const FLAG_LIST_ARRAY_VALUES = 0b00001000; |
34 | |
35 | #endregion |
36 | |
37 | /** |
38 | * 生成。 |
39 | * |
40 | * 名前付き引数で呼び出すが吉。 |
41 | * |
42 | * @param string $name 対象キー名。未設定の場合はプロパティ名から判定する。 |
43 | * @param int $flags 各種設定。 |
44 | * @phpstan-param int-mask-of<self::FLAG_*> $flags 各種設定。 |
45 | * @param string $arrayValueClassName マッピング先が配列の場合に割り当てるオブジェクト。指定がない場合はただの配列となる。 |
46 | * @phpstan-param class-string|Text::EMPTY $arrayValueClassName |
47 | * @param string $converter オブジェクト変換処理用の変換クラス名。 |
48 | * @phpstan-param class-string<TypeConverterBase<class-string>>|string $converter |
49 | */ |
50 | public function __construct( |
51 | public string $name = Text::EMPTY, |
52 | public int $flags = self::FLAG_NONE, |
53 | public string $arrayValueClassName = Text::EMPTY, |
54 | public string $converter = Text::EMPTY, |
55 | ) { |
56 | } |
57 | } |