FormsFactory   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 6
c 1
b 0
f 1
lcom 0
cbo 0
dl 0
loc 48
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A makeField() 0 4 1
A findFieldClass() 0 20 4
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
}