Completed
Push — master ( 42f7c0...7a19f2 )
by Arman
01:16 queued 20s
created

dynamicModel()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 4
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * Quantum PHP Framework
5
 *
6
 * An open source software development framework for PHP
7
 *
8
 * @package Quantum
9
 * @author Arman Ag. <[email protected]>
10
 * @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
11
 * @link http://quantum.softberg.org/
12
 * @since 2.9.8
13
 */
14
15
use Quantum\Libraries\Database\Contracts\DbalInterface;
16
use Quantum\Model\Exceptions\ModelException;
17
use Quantum\Model\Factories\ModelFactory;
18
use Quantum\Model\QtModel;
19
20
/**
21
 * Gets the model instance
22
 * @param string $modelClass
23
 * @return QtModel
24
 * @throws ModelException
25
 */
26
function model(string $modelClass): QtModel
27
{
28
    return ModelFactory::get($modelClass);
29
}
30
31
/**
32
 * Creates anonymous dynamic model
33
 * @param string $table
34
 * @param string $idColumn
35
 * @param array $foreignKeys
36
 * @param array $hidden
37
 * @return QtModel
38
 */
39
function dynamicModel(string $table, string $idColumn = 'id', array $foreignKeys = [], array $hidden = []): QtModel
40
{
41
    return ModelFactory::createDynamicModel($table, $idColumn, $foreignKeys, $hidden);
42
}
43
44
/**
45
 * Wraps the orm instance into model
46
 * @param DbalInterface $ormInstance
47
 * @param string $modelClass
48
 * @return QtModel
49
 */
50
function wrapToModel(DbalInterface $ormInstance, string $modelClass): QtModel
51
{
52
    if (!class_exists($modelClass)) {
53
        throw new InvalidArgumentException("Model class '$modelClass' does not exist.");
54
    }
55
56
    $model = new $modelClass();
57
58
    if (!$model instanceof QtModel) {
59
        throw new InvalidArgumentException("Model class '$modelClass' must extend QtModel.");
60
    }
61
62
    $model->setOrmInstance($ormInstance);
63
64
    return $model;
65
}