Completed
Pull Request — master (#40)
by
unknown
04:16
created

ModelsFactory::create()   B

Complexity

Conditions 4
Paths 6

Size

Total Lines 25
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 25
rs 8.5806
cc 4
eloc 17
nc 6
nop 0
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: execut
5
 * Date: 5/17/17
6
 * Time: 5:58 PM
7
 */
8
9
namespace pastuhov\ymlcatalog;
10
11
use yii\base\Exception;
12
use yii\base\Object;
13
use pastuhov\ymlcatalog\models\BaseModel;
14
use pastuhov\ymlcatalog\models\Category;
15
use pastuhov\ymlcatalog\models\Currency;
16
use pastuhov\ymlcatalog\models\CustomOffer;
17
use pastuhov\ymlcatalog\models\Shop;
18
use pastuhov\ymlcatalog\models\SimpleOffer;
19
use pastuhov\ymlcatalog\models\DeliveryOption;
20
21
class ModelsFactory extends Object
22
{
23
    public $modelClass = null;
24
    public function create() {
25
        $interfacesClasses = [
26
            CurrencyInterface::class => Currency::class,
27
            CategoryInterface::class => Category::class,
28
            CustomOfferInterface::class => CustomOffer::class,
29
            SimpleOfferInterface::class => SimpleOffer::class,
30
            ShopInterface::class => Shop::class,
31
            DeliveryOptionInterface::class => DeliveryOption::class,
32
        ];
33
34
        $model = false;
35
        foreach ($interfacesClasses as $interfacesClass => $class) {
36
            $interfaces = class_implements($this->modelClass);
37
            if (isset($interfaces[$interfacesClass])) {
38
                $model = new $class;
39
                break;
40
            }
41
        }
42
43
        if (!$model) {
44
            throw new Exception('Instance ' . $this->modelClass . ' is not haved YML model interface\'');
45
        }
46
47
        return $model;
48
    }
49
}