Test Failed
Push — main ( 4188bc...4df161 )
by Dimitri
12:56
created

PresentUnless   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 18
c 1
b 0
f 0
dl 0
loc 43
ccs 0
cts 15
cp 0
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A check() 0 22 3
A fillParameters() 0 6 1
1
<?php
2
3
/**
4
 * This file is part of Dimtrovich/Validation.
5
 *
6
 * (c) 2023 Dimitri Sitchet Tomkeu <[email protected]>
7
 *
8
 * For the full copyright and license information, please view
9
 * the LICENSE file that was distributed with this source code.
10
 */
11
12
namespace Dimtrovich\Validation\Rules;
13
14
use Rakit\Validation\Rule;
15
16
class PresentUnless extends AbstractRule
17
{
18
    /**
19
     * @var bool
20
     */
21
    protected $implicit = true;
22
23
    /**
24
     * {@inheritDoc}
25
     */
26
    public function fillParameters(array $params): Rule
27
    {
28
        $this->params['field']  = array_shift($params);
29
        $this->params['values'] = $params;
30
31
        return $this;
32
    }
33
34
    /**
35
     * {@inheritDoc}
36
     */
37
    public function check($value): bool
38
    {
39
        $this->requireParameters(['field', 'values']);
40
41
        $anotherAttribute = $this->parameter('field');
42
        $definedValues    = $this->parameter('values');
43
        $anotherValue     = $this->getAttribute()->getValue($anotherAttribute);
44
45
        $this->setParameterTextValues((array) $anotherAttribute, 'other_attribute');
46
        $this->setParameterTextValues((array) $definedValues, 'other_value');
47
48
        if (! in_array($anotherValue, $definedValues, is_bool($anotherValue) || null === $definedValues)) {
49
            $validator        = $this->validation->getValidator();
0 ignored issues
show
Bug introduced by
The method getValidator() does not exist on null. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

49
            /** @scrutinizer ignore-call */ 
50
            $validator        = $this->validation->getValidator();

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
50
            $presentValidator = $validator('present');
51
52
            $presentValidator->setValidation($this->validation);
53
            $presentValidator->setAttribute($this->attribute);
54
55
            return $presentValidator->check($value);
56
        }
57
58
        return true;
59
    }
60
}
61