ModelHelper   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 2
dl 0
loc 72
ccs 0
cts 14
cp 0
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A create() 0 11 1
A populate() 0 13 2
1
<?php
2
3
/**
4
 * @copyright  Copyright (c) Flipbox Digital Limited
5
 * @license    https://github.com/flipbox/spark/blob/master/LICENSE
6
 * @link       https://github.com/flipbox/spark
7
 */
8
9
namespace flipbox\spark\helpers;
10
11
use flipbox\spark\models\Model;
12
use yii\base\InvalidConfigException;
13
14
/**
15
 * @author Flipbox Factory <[email protected]>
16
 * @since 1.0.0
17
 */
18
class ModelHelper
19
{
20
21
    /**
22
     * The default scenario
23
     */
24
    const DEFAULT_SCENARIO = self::SCENARIO_DEFAULT;
25
26
    /**
27
     * The scenario used by default
28
     */
29
    const SCENARIO_DEFAULT = 'default';
30
31
    /**
32
     * The scenario used to populate a model
33
     */
34
    const SCENARIO_POPULATE = 'populate';
35
36
    /**
37
     * The scenario used to insert a model
38
     */
39
    const SCENARIO_INSERT = 'insert';
40
41
    /**
42
     * The scenario used to update a model
43
     */
44
    const SCENARIO_UPDATE = 'update';
45
46
    /**
47
     * The scenario used to save a model
48
     */
49
    const SCENARIO_SAVE = 'save';
50
51
    /**
52
     * @param $config
53
     * @param string|null $instanceOf
54
     * @param string|null $toScenario
55
     * @throws InvalidConfigException
56
     * @return Model
57
     */
58
    public static function create($config, string $instanceOf = null, string $toScenario = null): Model
59
    {
60
61
        // Get class from config
62
        $class = ObjectHelper::checkConfig($config, $instanceOf);
63
64
        // New model
65
        $model = new $class();
66
67
        return static::populate($model, $config, $toScenario);
68
    }
69
70
    /**
71
     * @param Model $model
72
     * @param array $attributes
73
     * @param string|null $toScenario
74
     * @return Model
75
     */
76
    public static function populate(Model $model, $attributes = [], string $toScenario = null): Model
77
    {
78
79
        // Set scenario
80
        if (null !== $toScenario) {
81
            $model->setScenario($toScenario);
82
        }
83
84
        // Populate model attributes
85
        $model->setAttributes($attributes);
86
87
        return $model;
88
    }
89
}
90