FormElementCheckbox   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
eloc 20
dl 0
loc 59
ccs 0
cts 20
cp 0
rs 10
c 0
b 0
f 0
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getHTML() 0 12 1
A __construct() 0 15 3
A value() 0 3 1
1
<?php
2
3
namespace Anax\HTMLForm;
4
5
/**
6
 * Form element
7
 */
8
class FormElementCheckbox extends FormElement
9
{
10
11
    /**
12
     * Constructor
13
     *
14
     * @param string $name       of the element.
15
     * @param array  $attributes to set to the element. Default is an empty array.
16
     */
17
    public function __construct($name, $attributes = [])
18
    {
19
        parent::__construct($name, $attributes);
20
21
        $this['type'] = 'checkbox';
22
        
23
        $this['checked'] = isset($attributes['checked'])
24
            ? $attributes['checked']
25
            : false;
26
            
27
        $this['value'] = isset($attributes['value'])
28
            ? $attributes['value']
29
            : $name;
30
            
31
        $this->UseNameAsDefaultLabel(null);
32
    }
33
34
35
36
    /**
37
     * Get the value of the form element.
38
     *
39
     * @return array the checked values of the form element.
40
     */
41
    public function value()
42
    {
43
        return $this['checked'];
44
    }
45
46
47
48
    /**
49
     * Get HTML code for a element.
50
     *
51
     * @return string HTML code for the element.
52
     *
53
     * @SuppressWarnings(PHPMD.UnusedLocalVariable)
54
     */
55
    public function getHTML()
56
    {
57
        $details = $this->getHTMLDetails();
58
        extract($details);
0 ignored issues
show
Bug introduced by
$details of type Anax\HTMLForm\HTML is incompatible with the type array expected by parameter $var_array of extract(). ( Ignorable by Annotation )

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

58
        extract(/** @scrutinizer ignore-type */ $details);
Loading history...
59
60
        return <<<EOD
0 ignored issues
show
Bug Best Practice introduced by
The expression return '<p> <input i...'>'.$description.'</p>' returns the type string which is incompatible with the return type mandated by Anax\HTMLForm\FormElement::getHTML() of Anax\HTMLForm\HTML.

In the issue above, the returned value is violating the contract defined by the mentioned interface.

Let's take a look at an example:

interface HasName {
    /** @return string */
    public function getName();
}

class Name {
    public $name;
}

class User implements HasName {
    /** @return string|Name */
    public function getName() {
        return new Name('foo'); // This is a violation of the ``HasName`` interface
                                // which only allows a string value to be returned.
    }
}
Loading history...
61
<p>
62
    <input id='$id'{$type}{$class}{$name}{$value}{$autofocus}{$required}{$readonly}{$checked}{$title} />
63
    <label for='$id'>$label</label>
64
    {$messages}
65
</p>
66
<p class='cf-desc'>{$description}</p>
67
EOD;
68
    }
69
}
70