FormValidation   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Test Coverage

Coverage 92.86%

Importance

Changes 0
Metric Value
dl 0
loc 41
ccs 13
cts 14
cp 0.9286
rs 10
c 0
b 0
f 0
wmc 4
lcom 0
cbo 4

1 Method

Rating   Name   Duplication   Size   Complexity  
B createFromPost() 0 29 4
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: harry
5
 * Date: 3/8/18
6
 * Time: 3:37 PM
7
 */
8
9
namespace PluginSimpleValidate;
10
11
use PluginSimpleValidate\Exception\RuleNotExist;
12
use Zend\Diactoros\ServerRequest;
13
14
class FormValidation extends Validation implements \PluginSimpleValidate\Contracts\FormValidation
15
{
16
    const RULE_DELIMITER  = ',';
17
18
    const PARAM_DELIMITER  = ':';
19
20
    /**
21
     * @param ServerRequest $serverRequest
22
     * @param array $rules
23
     * @throws RuleNotExist
24
     */
25 1
    public function createFromPost(ServerRequest $serverRequest, $rules = [])
26
    {
27 1
        $body = $serverRequest->getParsedBody();
28
29 1
        foreach ($rules as $name => $values) {
30
31
            // create fields
32 1
            $field = new Field($name, $body[$name]);
33
34
            // rules list
35 1
            $rulesArr = array_filter(explode(self::RULE_DELIMITER, $values));
36
37 1
            foreach ($rulesArr as $rule) {
38
                // rule param list
39 1
                $paramArr = array_filter(explode(self::PARAM_DELIMITER, $rule));
40 1
                $ruleMethod = $paramArr[0];
41
42 1
                array_shift($paramArr);
43
44
                try {
45 1
                    call_user_func_array([$field, $ruleMethod], $paramArr);
46
                } catch (\Exception $exception) {
47 1
                    throw new RuleNotExist('wrong rule parameter');
48
                }
49
            }
50
51 1
            $this->addField($field);
52
        }
53
    }
54
}