MapperConfig::fromArray()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 4
c 0
b 0
f 0
nc 2
nop 1
dl 0
loc 8
rs 10
1
<?php
2
declare(strict_types=1);
3
4
namespace Sirius\Orm;
5
6
use Sirius\Orm\Entity\GenericEntity;
7
use Sirius\Orm\Entity\HydratorInterface;
8
9
/**
10
 * Class MapperConfig
11
 * Used to create mapper definitions that can be created using Mapper::make($mapperConfigInstance)
12
 * This is useful for dynamically generated mappers (think Wordpress custom post types)
13
 * @package Sirius\Orm
14
 */
15
class MapperConfig
16
{
17
    const ENTITY_CLASS = 'entityClass';
18
    const PRIMARY_KEY = 'primaryKey';
19
    const TABLE = 'table';
20
    const TABLE_ALIAS = 'tableAlias';
21
    const COLUMNS = 'columns';
22
    const COLUMN_ATTRIBUTE_MAP = 'columnAttributeMap';
23
    const CASTS = 'casts';
24
    const DEFAULT_ATTRIBUTES = 'entityDefaultAttributes';
25
    const ENTITY_HYDRATOR = 'entityHydrator';
26
    const BEHAVIOURS = 'behaviours';
27
    const RELATIONS = 'relations';
28
    const SCOPES = 'scopes';
29
    const GUARDS = 'guards';
30
31
    public $entityClass = GenericEntity::class;
32
33
    public $primaryKey = 'id';
34
35
    /**
36
     * @var string
37
     */
38
    public $table;
39
40
    /**
41
     * Used in queries like so: FROM table as tableAlias
42
     * @var string
43
     */
44
    public $tableAlias;
45
46
    /**
47
     * Table columns
48
     * @var array
49
     */
50
    public $columns = [];
51
52
    /**
53
     * Columns casts
54
     * @var array
55
     */
56
    public $casts = [];
57
58
    /**
59
     * Column aliases (table column => entity attribute)
60
     * @var array
61
     */
62
    public $columnAttributeMap = [];
63
64
    /**
65
     * @var null|HydratorInterface
66
     */
67
    public $entityHydrator = null;
68
69
    /**
70
     * Default attributes
71
     * @var array
72
     */
73
    public $entityDefaultAttributes = [];
74
75
    /**
76
     * List of behaviours to be attached to the mapper
77
     * @var array[BehaviourInterface]
0 ignored issues
show
Documentation Bug introduced by
The doc comment array[BehaviourInterface] at position 1 could not be parsed: Expected ']' at position 1, but found '['.
Loading history...
78
     */
79
    public $behaviours = [];
80
81
    /**
82
     * List of relations of the configured mapper
83
     * (key = name of relation, value = relation instance)
84
     * @var array[BaseRelation]
0 ignored issues
show
Documentation Bug introduced by
The doc comment array[BaseRelation] at position 1 could not be parsed: Expected ']' at position 1, but found '['.
Loading history...
85
     */
86
    public $relations = [];
87
88
    /**
89
     * List of query callbacks that can be called directly from the query
90
     * @var array
91
     */
92
    public $scopes = [];
93
94
    /**
95
     * List of column-value pairs that act as global filters
96
     * @var array
97
     */
98
    public $guards = [];
99
100
    public static function fromArray(array $array)
101
    {
102
        $instance = new self;
103
        foreach ($array as $k => $v) {
104
            $instance->{$k} = $v;
105
        }
106
107
        return $instance;
108
    }
109
}
110