Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
29 / 29
100.00% covered (success)
100.00%
18 / 18
CRAP
100.00% covered (success)
100.00%
1 / 1
AbstractValidator
100.00% covered (success)
100.00%
29 / 29
100.00% covered (success)
100.00%
18 / 18
21
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
4
 getName
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getDescription
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getValue
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getMessage
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getInput
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getResults
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 hasName
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 hasDescription
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 hasValue
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 hasMessage
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 hasInput
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 hasResults
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setName
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setDescription
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setValue
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setMessage
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setInput
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 evaluate
n/a
0 / 0
n/a
0 / 0
0
1<?php
2/**
3 * Pop PHP Framework (http://www.popphp.org/)
4 *
5 * @link       https://github.com/popphp/popphp-framework
6 * @author     Nick Sagona, III <dev@noladev.com>
7 * @copyright  Copyright (c) 2009-2025 NOLA Interactive, LLC.
8 * @license    http://www.popphp.org/license     New BSD License
9 */
10
11/**
12 * @namespace
13 */
14namespace Pop\Validator;
15
16/**
17 * Abstract validator class
18 *
19 * @category   Pop
20 * @package    Pop\Validator
21 * @author     Nick Sagona, III <dev@noladev.com>
22 * @copyright  Copyright (c) 2009-2025 NOLA Interactive, LLC.
23 * @license    http://www.popphp.org/license     New BSD License
24 * @version    4.5.0
25 */
26abstract class AbstractValidator implements ValidatorInterface
27{
28
29    /**
30     * Validator name
31     * @var ?string
32     */
33    protected mixed $name = null;
34
35    /**
36     * Validator description
37     * @var ?string
38     */
39    protected mixed $description = null;
40
41    /**
42     * Validator value to test against
43     * @var mixed
44     */
45    protected mixed $value = null;
46
47    /**
48     * Input value to test
49     * @var mixed
50     */
51    protected mixed $input = null;
52
53    /**
54     * Validator message
55     *  - The message provided when the validation fails
56     * @var ?string
57     */
58    protected ?string $message = null;
59
60    /**
61     * Validator results
62     *  - Optional results to collect post-validation, would be something that was
63     *    set by a custom validator in its "evaluate" method
64     * @var mixed
65     */
66    protected mixed $results = null;
67
68    /**
69     * Constructor
70     *
71     * Instantiate the validator object
72     *
73     * @param  mixed   $value
74     * @param  ?string $message
75     * @param  ?string $name
76     * @param  ?string $description
77     */
78    public function __construct(mixed $value = null, ?string $message = null, ?string $name = null, ?string $description = null)
79    {
80        $this->setValue($value);
81        if ($message !== null) {
82            $this->setMessage($message);
83        }
84        if ($name !== null) {
85            $this->setName($name);
86        }
87        if ($description !== null) {
88            $this->setDescription($description);
89        }
90    }
91
92    /**
93     * Get the validator name
94     *
95     * @return ?string
96     */
97    public function getName(): ?string
98    {
99        return $this->name;
100    }
101
102    /**
103     * Get the validator description
104     *
105     * @return ?string
106     */
107    public function getDescription(): ?string
108    {
109        return $this->description;
110    }
111
112    /**
113     * Get the validator value
114     *
115     * @return mixed
116     */
117    public function getValue(): mixed
118    {
119        return $this->value;
120    }
121
122    /**
123     * Get the validator default message
124     *
125     * @return string|null
126     */
127    public function getMessage(): string|null
128    {
129        return $this->message;
130    }
131
132    /**
133     * Get the validator input
134     *
135     * @return mixed
136     */
137    public function getInput(): mixed
138    {
139        return $this->input;
140    }
141
142    /**
143     * Get the validator results
144     *
145     * @return mixed
146     */
147    public function getResults(): mixed
148    {
149        return $this->results;
150    }
151
152    /**
153     * Has validator name
154     *
155     * @return bool
156     */
157    public function hasName(): bool
158    {
159        return ($this->name !== null);
160    }
161
162    /**
163     * Has validator description
164     *
165     * @return bool
166     */
167    public function hasDescription(): bool
168    {
169        return ($this->description !== null);
170    }
171
172    /**
173     * Has validator value
174     *
175     * @return bool
176     */
177    public function hasValue(): bool
178    {
179        return ($this->value !== null);
180    }
181
182    /**
183     * Has validator message
184     *
185     * @return bool
186     */
187    public function hasMessage(): bool
188    {
189        return ($this->message !== null);
190    }
191
192    /**
193     * Has validator input
194     *
195     * @return bool
196     */
197    public function hasInput(): bool
198    {
199        return ($this->input !== null);
200    }
201
202    /**
203     * Has validator results
204     *
205     * @return bool
206     */
207    public function hasResults(): bool
208    {
209        return !empty($this->results);
210    }
211
212    /**
213     * Set the validator name
214     *
215     * @param  ?string $name
216     * @return static
217     */
218    public function setName(?string $name = null): static
219    {
220        $this->name = $name;
221        return $this;
222    }
223
224    /**
225     * Set the validator description
226     *
227     * @param  ?string $description
228     * @return static
229     */
230    public function setDescription(?string $description = null): static
231    {
232        $this->description = $description;
233        return $this;
234    }
235
236    /**
237     * Set the validator value
238     *
239     * @param  mixed $value
240     * @return AbstractValidator
241     */
242    public function setValue(mixed $value): AbstractValidator
243    {
244        $this->value = $value;
245        return $this;
246    }
247
248    /**
249     * Set the validator condition
250     *
251     * @param  ?string $message
252     * @return AbstractValidator
253     */
254    public function setMessage(?string $message = null): AbstractValidator
255    {
256        $this->message = $message;
257        return $this;
258    }
259
260    /**
261     * Set the validator input
262     *
263     * @param  mixed $input
264     * @return AbstractValidator
265     */
266    public function setInput(mixed $input = null): AbstractValidator
267    {
268        $this->input = $input;
269        return $this;
270    }
271
272    /**
273     * Evaluate
274
275     * @param  mixed $input
276     * @return bool
277     */
278    abstract public function evaluate(mixed $input = null): bool;
279
280}