Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3declare(strict_types=1);
4
5namespace PeServer\Core\Serialization;
6
7use PeServer\Core\Throws\MapperKeyNotFoundException;
8use PeServer\Core\Throws\MapperTypeException;
9
10/**
11 * 配列とオブジェクトの相互変換。
12 *
13 * 細かい制御が必要な場合は `Mapping` 属性を使用する想定(実装クラスがサポートしていればになるが)。
14 *
15 * * 配列とクラスの設計は十分に制御可能なデータであることが前提(=開発者が操作可能)
16 * * **!!現状相互ではない!!**
17 *   * 相互にする気もない
18 */
19interface IMapper
20{
21    #region function
22
23    /**
24     * 配列データをオブジェクトにマッピング。
25     *
26     * @param array<string,mixed> $source 元データ。
27     * @param object $destination マッピング先
28     * @throws MapperKeyNotFoundException キーが見つからない(`Mapping::FLAG_EXCEPTION_NOT_FOUND_KEY`)。
29     * @throws MapperTypeException 型変換がもう無理(`Mapping::FLAG_EXCEPTION_TYPE_MISMATCH`)。
30     */
31    public function mapping(array $source, object $destination): void;
32
33    /**
34     * オブジェクトデータを配列に変換。
35     *
36     * @param object $source
37     * @return array<string,mixed>
38     */
39    public function export(object $source): array;
40
41    #endregion
42}