Issues (88)

src/Rules/RequiredIfDeclined.php (2 issues)

Labels
Severity
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 Dimtrovich\Validation\Rule;
15
16
class RequiredIfDeclined extends AbstractRule
17
{
18
    /**
19
     * @var bool
20
     */
21
    protected $implicit = true;
22
23
    /**
24
     * @var array
25
     */
26
    protected $fillableParams = ['field'];
27
28
    /**
29
     * {@inheritDoc}
30
     */
31
    public function check($value): bool
32
    {
33
        $this->requireParameters($this->fillableParams);
34
35
        $anotherAttribute = $this->parameter('field');
36
        $anotherValue     = $this->getAttribute()->getValue($anotherAttribute);
37
38
        $this->setParameterTextValues((array) $anotherAttribute, 'other_attribute');
39
40
        if (Rule::declined()->check($anotherValue)) {
41
            $requiredValidator = $this->getRuleValidator('required');
42
43
            $requiredValidator->setValidation($this->validation);
0 ignored issues
show
It seems like $this->validation can also be of type null; however, parameter $validation of Rakit\Validation\Rule::setValidation() does only seem to accept Rakit\Validation\Validation, maybe add an additional type check? ( Ignorable by Annotation )

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

43
            $requiredValidator->setValidation(/** @scrutinizer ignore-type */ $this->validation);
Loading history...
44
            $requiredValidator->setAttribute($this->attribute);
0 ignored issues
show
It seems like $this->attribute can also be of type null; however, parameter $attribute of Rakit\Validation\Rule::setAttribute() does only seem to accept Rakit\Validation\Attribute, maybe add an additional type check? ( Ignorable by Annotation )

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

44
            $requiredValidator->setAttribute(/** @scrutinizer ignore-type */ $this->attribute);
Loading history...
45
46
            return $requiredValidator->check($value);
47
        }
48
49
        return true;
50
    }
51
}
52