Code Duplication    Length = 21-35 lines in 2 locations

src/Hydrator/ElasticHydrator.php 1 location

@@ 9-43 (lines=35) @@
6
7
use Indigerd\Hydrator\Hydrator;
8
9
class ElasticHydrator extends Hydrator
10
{
11
    /**
12
     * @param $target
13
     * @param array $data
14
     * @return object
15
     */
16
    public function hydrate($target, array $data): object
17
    {
18
        $entityData = [];
19
        if (isset($data['_id'])) {
20
            $entityData['id'] = (string)$data['_id'];
21
        }
22
23
        $entityData += $data['_source'];
24
25
        return parent::hydrate($target, $entityData);
26
    }
27
28
    /**
29
     * @param object $object
30
     * @param array $fields
31
     * @return array
32
     */
33
    public function extract(object $object, array $fields = []): array
34
    {
35
        $result = parent::extract($object, $fields);
36
        if (isset($result['id'])) {
37
            $result['_id'] = $result['id'];
38
            unset($result['id']);
39
        }
40
41
        return $result;
42
    }
43
}
44

src/Hydrator/MongoHydrator.php 1 location

@@ 7-27 (lines=21) @@
4
5
use Indigerd\Hydrator\Hydrator;
6
7
class MongoHydrator extends Hydrator
8
{
9
    public function hydrate($target, array $data): object
10
    {
11
        if (isset($data['_id'])) {
12
            $data['id'] = (string)$data['_id'];
13
            unset($data['_id']);
14
        }
15
        return parent::hydrate($target, $data);
16
    }
17
18
    public function extract(object $object, array $fields = []): array
19
    {
20
        $result = parent::extract($object, $fields);
21
        if (isset($result['id'])) {
22
            $result['_id'] = $result['id'];
23
            unset($result['id']);
24
        }
25
        return $result;
26
    }
27
}
28