Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
28.57% covered (danger)
28.57%
4 / 14
25.00% covered (danger)
25.00%
1 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
StringOption
28.57% covered (danger)
28.57%
4 / 14
25.00% covered (danger)
25.00%
1 / 4
24.86
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 check
33.33% covered (danger)
33.33%
2 / 6
0.00% covered (danger)
0.00%
0 / 1
5.67
 getValueForPrint
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getDefinition
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace WebPConvert\Options;
4
5use WebPConvert\Options\Option;
6use WebPConvert\Options\Exceptions\InvalidOptionValueException;
7
8/**
9 * Abstract option class
10 *
11 * @package    WebPConvert
12 * @author     Bjørn Rosell <it@rosell.dk>
13 * @since      Class available since Release 2.0.0
14 */
15class StringOption extends Option
16{
17
18    protected $typeId = 'string';
19    protected $enum;
20    protected $schemaType = ['string'];
21
22    public function __construct($id, $defaultValue, $enum = null)
23    {
24        $this->enum = $enum;
25        parent::__construct($id, $defaultValue);
26    }
27
28    public function check()
29    {
30        $this->checkType('string');
31
32        if (!is_null($this->enum) && (!in_array($this->getValue(), $this->enum))) {
33            throw new InvalidOptionValueException(
34                '"' . $this->id . '" option must be on of these values: ' .
35                '[' . implode(', ', $this->enum) . ']. ' .
36                'It was however set to: "' . $this->getValue() . '"'
37            );
38        }
39    }
40
41    public function getValueForPrint()
42    {
43        return '"' . $this->getValue() . '"';
44    }
45
46    public function getDefinition()
47    {
48        $obj = parent::getDefinition();
49        $obj['sensitive'] = false;
50        if (!is_null($this->enum)) {
51            $obj['options'] = $this->enum;
52        }
53        return $obj;
54    }
55}