InterfaceTest::save()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 5
c 1
b 0
f 0
nc 2
nop 0
dl 0
loc 7
rs 10
1
<?php
2
3
namespace carono\exchange1c\models;
4
5
use yii\base\Model;
6
use yii\db\ActiveRecord;
7
8
/**
9
 * @property ActiveRecord model
10
 */
11
class InterfaceTest extends Model
12
{
13
    public $class;
14
    public $id;
15
16
    public function rules()
17
    {
18
        return [
19
            [['class', 'id'], 'safe']
20
        ];
21
    }
22
23
    public function save()
24
    {
25
        if (!$this->getModel()) {
26
            $this->addError('id', 'Model not found');
27
            return false;
28
        } else {
29
            return \Yii::$app->cache->set([self::class, $this->class], $this, 300);
30
        }
31
    }
32
33
    public function getModel()
34
    {
35
        try {
36
            return call_user_func("{$this->class}::findOne", $this->id);
37
        } catch (\Exception $e) {
38
            return null;
39
        }
40
    }
41
42
    /**
43
     * @param $class
44
     * @return InterfaceTest|mixed
45
     */
46
    public static function findByClass($class)
47
    {
48
        if (!$model = \Yii::$app->cache->get([self::class, $class])) {
49
            return new self(['class' => $class]);
50
        } else {
51
            return $model;
52
        }
53
    }
54
}