FormsFactory::findFieldClass()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 20
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 20
rs 9.2
cc 4
eloc 10
nc 4
nop 1
1
<?php
2
3
namespace Code4\Forms;
4
5
class FormsFactory {
6
7
    private $app;
8
9
    public function __construct($app) {
10
        $this->app = $app;
11
    }
12
13
    /**
14
     * Makes field from class
15
     * @param $class
16
     * @param $fieldName
17
     * @param $data
18
     * @return mixed
19
     */
20
    public function makeField($class, $fieldName, $data) {
21
        $class = $this->findFieldClass($class);
22
        return new $class($fieldName, $data);
23
    }
24
25
    /**
26
     * Tests passed string if is an user class or field name. Returns found class
27
     * @param $field
28
     * @return string
29
     * @throws \Exception
30
     */
31
    public function findFieldClass($field) {
32
        //Custom class
33
        if (class_exists($field)) {
34
            return $field;
35
        }
36
37
        //Field class
38
        $class = '\Code4\Forms\Fields\\'.$field;
39
        if (class_exists($class)) {
40
            return $class;
41
        }
42
43
        //Default class if field class not found
44
        $class = \Code4\Forms\Fields\text::class;
45
        if (class_exists($class)) {
46
            return $class;
47
        }
48
49
        throw new \Exception('Unable to find class: '.$class);
50
    }
51
52
}